我正在使用this go软件包,一切都很好。但是汉字打印不好。我不擅长这种底层/硬件/编码方面的事情。因此有人提示我如何更正我的代码。
更新代码:
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
答案 0 :(得分:0)
这取决于您的环境。
如果您正在Windows CMD(which only supports UTF16 encoding)中执行此Go程序,则会看到奇怪的字符。
请参见“ How to properly output a string in a Windows console with go?”作为示例。
您需要先转换这些字符,然后再打印出来。