Go 编码问题的解决方案
1.首先需要mahonia 这个包
go get github.com/axgle/mahonia
然后新建一个 func
src 字符串
srcCode 字符串当前编码
tagCode 要转换的编码
func ConvertToString(src string, srcCode string, tagCode string) string {
srcCoder := mahonia.NewDecoder(srcCode)
srcResult := srcCoder.ConvertString(src)
tagCoder := mahonia.NewDecoder(tagCode)
_, cdata, _ := tagCoder.Translate([]byte(srcResult), true)
result := string(cdata)
return result
}
l例子:
调用ConvertToString 方法
str := "乱码的字符串变量"
str = ConvertToString(str, "gbk", "utf-8")
fmt.Println(str)
2.unicode 码和中文之间的转换
将中文转换为unicode码,使用golang中的strconv包中的QuoteToASCII直接进行转换,将unicode码转换为中文就比较麻烦一点,先对unicode编码按\u进行分割,然后使用strconv.ParseInt,将16进制数字转换Int64,在使用fmt.Sprintf将数字转换为字符,最后将其连接在一起,这样就变成了中文字符串了。 参考代码如下:
package main import (
"fmt"
"strconv"
"strings"
) func main() {
sText := "中文"
textQuoted := strconv.QuoteToASCII(sText)
textUnquoted := textQuoted[ : len(textQuoted)-]
fmt.Println(textUnquoted) sUnicodev := strings.Split(textUnquoted, "\\u")
var context string
for _, v := range sUnicodev {
if len(v) < {
continue
}
temp, err := strconv.ParseInt(v, , )
if err != nil {
panic(err)
}
context += fmt.Sprintf("%c", temp)
}
fmt.Println(context)
}
运行结果:
\u4e2d\u6587
中文
3. 需要导入的包
"golang.org/x/text/transform"
"golang.org/x/text/encoding/simplifiedchinese"
如果golang.org下载不下来,可以去github上下载克隆版,
go get github.com/zieckey/golang.org
然后将golang.org移动到src目录下即可。
例子: gbk转utf-8
func gbk2utf8(str byte[]) ([]byte, error) {
return ioutil.ReadAll(transform.NewReader(bytes.NewReader(str), simplifiedchinese.GBK.NewDecoder()))
}
Go 编码问题的解决方案的更多相关文章
- 报表开发工具中mysql数据库连接编码转化失效解决方案
1. 问题描述 在报表开发工具FineReport中,mysql数据库连接通过数据连接编码转换进行编码的转换,在通过报表录入往数据库中录入中文数据的时候,总是出现乱码,这个该怎么解决呢? 2. 解决方 ...
- [py]Win10下的pip/pip3 install 导致utf-8编码问题的解决方案
置顶感谢:http://blog.csdn.net/qq_33530388/article/details/68933201 今天安装时遇到了windows下棘手的问题 UnicodeDecodeEr ...
- 关于Django中JsonResponse返回中文字典编码错误的解决方案
解决方案:JsonResponse(data, json_dumps_params={'ensure_ascii':False}) ! data是需要渲染的字典 def master(request) ...
- 关于在head里的link href=<%=%>,其中前置百分号给编码了的解决方案
做了一个项目,主要是能够自动换模板,实际就是插入数据库那个css名称,然后前台取出那个值,放入getcss变量里(getcss自己定义的一个变量),然后通过link href=<%=%>取 ...
- java 项目 存入mysql后 变问号 MySql 5.6 (X64) 解压版 1067错误与编码问题的解决方案
[参考]MySQL 5.7.19 忘记密码 重置密码 my.ini示例 服务启动后停止 环境 Java环境JDK1.8 安装好了 mysql-5.6.38-winx64 idea2016(64) ...
- powershell -enc参数无法解码base64编码payload的解决方案
powershell的-enc参数允许传入一个base64编码过的powershell脚本字符串作为参数来执行该powershell脚本,该方法常被用于绕过杀毒软件的主动防御机制. 今天下午在做一个后 ...
- PHP使用UTF8编码读取ACCESS的乱码问题解决方案(转)
PHP使用UTF8编码读取ACCESS的乱码问题解决方案 http://it.xwstudy.com/readnews.php?id=627 来源:本站编辑 发布日期:2013-05-27 已有 17 ...
- 关于python中的字符串编码理解
python2.x 中中间编码为unicode,一个字符串需要decode为unicode,再encode为其它编码格式(gbk.utf8等) 以gbk转utf8为例: s = "我是字符串 ...
- python----设置默认编码
问题:python的默认编码是ascii.在处理中文的时候可能会出现乱码的情况:这个时候我们就需要把编码设置为对应的编码了. 解决方案: 对python文件的头部做如下修改 import sys re ...
随机推荐
- 2019年北航OO第三单元(JML规格任务)总结
一.JML简介 1.1 JML与契约式设计 说起JML,就不得不提到契约式设计(Design by Contract).这种设计模式的始祖是1986年的Eiffel语言.它是一种限定了软件中每个元素所 ...
- hadoop 2.6.0 LightWeightGSet源码分析
LightWeightGSet的作用用一个数组来存储元素,而且用链表来解决冲突.不能rehash.所以内部数组永远不用改变大小.此类不支持空元素. 此类也不是线程安全的.有两个类型參数.第一个用于查找 ...
- Dynamics CRM2013 Form利用window.location.reload()进行全局刷新带来的问题及解决的方法
CRM2013以后.表单的保存后变成了局部刷新而非全局刷新,但非常多情况下我们须要刷新整个页面.通过刷新页面来使脚本运行或者业务规则运行来实现某些业务效果,一般我们会使用window.location ...
- 对象逆序列化报错:java.lang.ClassNotFoundException
简单的想从保存的对象中又一次解析出对象.用了逆序列化,但是报错: java.lang.ClassNotFoundException: xxxxxxxxxxxx at java.net.URLClass ...
- angularjs $http 服务
<!DOCTYPE HTML> <html ng-app="myApp"> <head> <meta http-equiv="C ...
- 19.允许重复的unordered_map
#include <string> #include <iostream> //查询性能最高 //允许重复的,hash_map #include <unordered_m ...
- Android--Fragment与Activity通信
package com.example.testfragment; import com.example.testfragment.MainFargment.BackString; import an ...
- codeforces 540 C Ice Cave【BFS】
题意:给出一个n*m的矩阵,“.”代表完整的冰,“X”代表破碎的冰,现在为了前进,需要掉下去一层,唯一的方法就是从破碎的冰上面掉下去 然后给出起点还有终点,问能否可达 即为到达终点的时候,终点必须是破 ...
- grvphviz && dot脚本语言
安装graphviz 可去官网下载http://www.graphviz.org/download/下载之后按步骤安装 打开编辑器,创建*.dot文件,编辑dot脚本代码,保存. D:\>dot ...
- laravel5.0 自定义服务类
一.创建加密服务类 在 app\services 目录下创建 Encrypt.php <?php namespace App\Services; class Encrypt { } 二.注册服务 ...