Golang Go语言中问个 utf8 和 gbk 转码的问题

发布于 1周前 作者 phonegap100 来自 Go语言

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

5 回复

你试试三个字的,哈哈哈。先往 Unicode 转试一试

更多关于Golang Go语言中问个 utf8 和 gbk 转码的问题的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


恩。奇数个中文都不行;可能是因为单个中文是 3 个字节,不是 2 的倍数,转不成功?

那有没办法将 中文的 utf8 当成 gbk 去转 utf8 这种数据给转回来

在Go语言中处理UTF-8和GBK编码转换时,你可以利用标准库中的encoding包来实现。具体步骤如下:

  1. UTF-8到GBK的转换

    • 首先,你需要将UTF-8编码的字符串转换为一个字节切片。
    • 然后,使用encoding/gbk包中的NewDecoder函数创建一个GBK解码器(注意:Go标准库中没有直接提供GBK的编码/解码,但你可以使用第三方库如golang.org/x/text/encoding/simplifiedchinese)。
    • 使用解码器将字节切片解码为GBK编码的字符串。
  2. 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库。

回到顶部