Golang Go语言中问个 utf8 和 gbk 转码的问题
func Utf2Gbk(s string) (string, error) { ... } func Gbk2Utf(s string) (string, error) { ... }
比如我将 "你好" 当成 gbk 格式转成 utf8,即调用 Gbk2Utf("你好") ,然后再调用 Utf2Gbk 转回 gbk,这样是成功的。
但是只有一个字的时候,发现是不行的,比如 "你",先调用 Gbk2Utf("你") 再调用 Utf2Gbk 转不回来了
Golang Go语言中问个 utf8 和 gbk 转码的问题
更多关于Golang Go语言中问个 utf8 和 gbk 转码的问题的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
你试试三个字的,哈哈哈。先往 Unicode 转试一试
更多关于Golang Go语言中问个 utf8 和 gbk 转码的问题的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
恩。奇数个中文都不行;可能是因为单个中文是 3 个字节,不是 2 的倍数,转不成功?
那有没办法将 中文的 utf8 当成 gbk 去转 utf8 这种数据给转回来
在Go语言中处理UTF-8和GBK编码转换时,你可以利用标准库中的encoding
包来实现。具体步骤如下:
-
UTF-8到GBK的转换:
- 首先,你需要将UTF-8编码的字符串转换为一个字节切片。
- 然后,使用
encoding/gbk
包中的NewDecoder
函数创建一个GBK解码器(注意:Go标准库中没有直接提供GBK的编码/解码,但你可以使用第三方库如golang.org/x/text/encoding/simplifiedchinese
)。 - 使用解码器将字节切片解码为GBK编码的字符串。
-
GBK到UTF-8的转换:
- 将GBK编码的字符串转换为一个字节切片。
- 使用
encoding/gbk
包中的NewEncoder
函数创建一个GBK编码器(同样需要第三方库支持)。 - 使用编码器将字节切片编码为UTF-8编码的字符串。
示例代码(使用golang.org/x/text/encoding/simplifiedchinese
库):
package main
import (
"bytes"
"fmt"
"golang.org/x/text/encoding/simplifiedchinese"
"golang.org/x/text/transform"
"io/ioutil"
)
func main() {
utf8Str := "你好,世界"
gbkBytes, _, err := transform.String(simplifiedchinese.GBK.NewEncoder(), utf8Str)
if err != nil {
panic(err)
}
fmt.Println("GBK:", string(gbkBytes))
// 反向转换
reader := transform.NewReader(bytes.NewReader(gbkBytes), simplifiedchinese.GBK.NewDecoder())
utf8Bytes, err := ioutil.ReadAll(reader)
if err != nil {
panic(err)
}
fmt.Println("UTF-8:", string(utf8Bytes))
}
注意:确保你已经安装了golang.org/x/text
库。