我正在使用Go语言打印到POS打印机,但是打印出的中文字符质量不好.(英语可以) [英] I'm using go language to print to a POS printer, but got bad prints of Chinese charater. (English is OK)

查看:64
本文介绍了我正在使用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.

更新代码:

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

More details zsbd

推荐答案

这取决于您的环境.

如果您在Windows CMD(仅支持UTF16编码)中执行此Go程序,您会发现很奇怪字符.
请参阅"如何在Windows控制台中使用go正确输出字符串?".
您需要先转换这些字符,然后再将其打印出来.

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.

这篇关于我正在使用Go语言打印到POS打印机,但是打印出的中文字符质量不好.(英语可以)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆