我正在处理一个需要将文本从编码(例如,Windows-1256阿拉伯语)转换为UTF-8的项目.

在围棋里怎么做呢?

推荐答案

您可以使用the encoding package,它通过包golang.org/x/text/encoding/charmap支持Windows-1256(在下面的示例中,导入此包并使用charmap.Windows1256代替japanese.ShiftJIS).

下面是一个简短的示例,它将一个日本UTF-8字符串编码为ShiftJIS编码,然后将ShiftJIS字符串解码回UTF-8.不幸的是,它在操场上不起作用,因为操场上没有"x"包.

package main

import (
    "bytes"
    "fmt"
    "io/ioutil"
    "strings"

    "golang.org/x/text/encoding/japanese"
    "golang.org/x/text/transform"
)

func main() {
    // the string we want to transform
    s := "今日は"
    fmt.Println(s)

    // --- Encoding: convert s from UTF-8 to ShiftJIS 
    // declare a bytes.Buffer b and an encoder which will write into this buffer
    var b bytes.Buffer
    wInUTF8 := transform.NewWriter(&b, japanese.ShiftJIS.NewEncoder())
    // encode our string
    wInUTF8.Write([]byte(s))
    wInUTF8.Close()
    // print the encoded bytes
    fmt.Printf("%#v\n", b)
    encS := b.String()
    fmt.Println(encS)

    // --- Decoding: convert encS from ShiftJIS to UTF8
    // declare a decoder which reads from the string we have just encoded
    rInUTF8 := transform.NewReader(strings.NewReader(encS), japanese.ShiftJIS.NewDecoder())
    // decode our string
    decBytes, _ := ioutil.ReadAll(rInUTF8)
    decS := string(decBytes)
    fmt.Println(decS)
}

在日本的StackOverflow网站上有一个更完整的例子.文本是日语,但代码应该不言自明:https://ja.stackoverflow.com/questions/6120

Go相关问答推荐

区分Terminal和Hook Zerolog Go中的错误级别日志(log)输出

Go -SDP服务器读缓冲区不会更改任何内容

GORM Find(&;Room)操作使用空数据而不是实际数据填充 struct

Golang中的泛型 struct /接口列表

在Go中旋转矩阵

关于如何使用 Service Weaver 设置多个不同侦听器的问题

Prometheus 摘要分位数错误

如何在正则表达式中使整个单词可选?

使用Cookie身份验证的Gorilla Golang Websocket优化

linter 警告:返回值被忽略

是否可以从 golang 中的参数推断类型?

也许在 golang 中包(字符串和字符串类型不匹配)

访问传递给可变参数函数的通用 struct 的特定字段

如何在切片增长时自动将切片的新元素添加到函数参数

在 Go 中发送 ack 和 term 后消息仍在 nats 限制队列中

如何在 GORM 中迭代一个 int 数组

Golang ACMEv2 HTTP-01 挑战不挑战服务器

Golang 使用 docker 将敏感数据作为参数传递

我该如何做错误处理惯用的方式

Go/Golang:如何从 big.Float 中提取最低有效数字?