gpt4 book ai didi

go - 我正在使用 go 语言打印到 POS 打印机,但汉字打印错误。 (英语可以)

转载 作者:IT王子 更新时间:2023-10-29 02:20:37 25 4
gpt4 key购买 nike

我正在使用 this去打包,一切都很好。但是汉字打印不好。我不擅长这种低级/硬件/编码的东西。所以有人提示我如何更正我的代码。

更新代码:

func main() {
testWindowPrinter()
}

func testWindowPrinter() {
// all have bad prints
printLines(simplifiedchinese.GBK.NewDecoder().Reader(strings.NewReader("你好")))
printLines(simplifiedchinese.HZGB2312.NewDecoder().Reader(strings.NewReader("你好")))
printLines(strings.NewReader("你好"))
}

func printLines(lines ...io.Reader) error {
var defaultPrinter, err = printer.Default()
if err != nil {
log.Println(1, err.Error())
return err
}

p, err := printer.Open(defaultPrinter)
if err != nil {
log.Println(2, err.Error())
return err
}
defer p.Close()

err = p.StartRawDocument("test")
if err != nil {
log.Println(3, err.Error())
return err
}
defer p.EndDocument()

err = p.StartPage()
if err != nil {
log.Println(4, err.Error())
return err
}

// Am I doing right here?
for i := range lines {
var bf = new(bytes.Buffer)
n, err := bf.ReadFrom(lines[i])
if err != nil {
println(err.Error())
} else {
println(n)
fmt.Fprintln(p, bf.String())
}
}

err = p.EndPage()
if err != nil {
log.Println(5, err.Error())
return err
}

return nil
}

更多详情zsbd

最佳答案

这取决于您的环境。

如果您在 Windows CMD ( which only supports UTF16 encoding ) 中执行此 Go 程序,您将看到奇怪的字符。
以“How to properly output a string in a Windows console with go?”为例。
您需要在打印之前转换这些字符。

关于go - 我正在使用 go 语言打印到 POS 打印机,但汉字打印错误。 (英语可以),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51434977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com