我正在使用Go语言打印到POS打印机,但是打印出的中文字符质量不好。 (英语可以)

I'm using this go package, and everything is good. But got bad prints of Chinese characters. I'm not good at this kind of low-level / hardware / encoding things. So someone give a hint how can I correct my code.

Updated code:

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
}

More details zsbd

It depends on your environment.

If you are executing this Go program in a Windows CMD (which only supports UTF16 encoding), you will see strange characters.
See "How to properly output a string in a Windows console with go?" as an example.
You need to convert those characters before printing them out.