我正在使用该Flutter包esc_pos_printer 1.5.0打印到热敏打印机。如果我打印拉丁字符,一切正常。我尝试过使用多语言代码页,但在尝试打印泰语字符时总是失败。我需要能够用英语、泰语、缅甸语、高棉语和越南语打印。此软件包中所有可用的代码页似乎都不支持非拉丁亚洲语言。这对我和其他许多人来说都是一个令人惊叹的事情。
II 向打印机发送 ESC 命令以更改代码页,然后按预期打印泰文和拉丁字符的新代码页。但是,当我尝试打印泰语字符时,我的应用程序崩溃了。
\n\n我从调试器中收到此错误:
\n\nE/flutter (29402): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: Invalid argument (string): Contains invalid characters.: "\xe0\xb8\xa2\xe0\xb8\xb4\xe0\xb8\x99\xe0\xb8\x94\xe0\xb8\xb5\xe0\xb8\x95\xe0\xb9\x89\xe0\xb8\xad\xe0\xb8\x99\xe0\xb8\xa3\xe0\xb8\xb1\xe0\xb8\x9a"\nE/flutter (29402): #0 _UnicodeSubsetEncoder.convert (dart:convert/ascii.dart:88:9)\nE/flutter (29402): #1 Latin1Codec.encode (dart:convert/latin1.dart:42:46)\nRun Code Online (Sandbox Code Playgroud)\n\n这是我的代码:
\n\nvoid _printReceipt(BuildContext context) {\n\n String ip = \'192.168.1.100\'; \n\n Printer.connect(ip, port: 9100).then((printer) {\n\n printer.sendRaw([27, 116, 255]);\n\n printer.printCodeTable();\n\n printer.println(\'Welcome\');\n\n printer.println(\'\xe0\xb8\xa2\xe0\xb8\xb4\xe0\xb8\x99\xe0\xb8\x94\xe0\xb8\xb5\xe0\xb8\x95\xe0\xb9\x89\xe0\xb8\xad\xe0\xb8\x99\xe0\xb8\xa3\xe0\xb8\xb1\xe0\xb8\x9a\');\n\n printer.cut();\n printer.disconnect();\n}\n);\n}\nRun Code Online (Sandbox Code Playgroud)\n\n编辑:我尝试将字符串编码为字节并像这样打印
\n\n_bytes = utf8.encode("\xe0\xb8\xa2\xe0\xb8\xb4\xe0\xb8\x99\xe0\xb8\x94\xe0\xb8\xb5\xe0\xb8\x95\xe0\xb9\x89\xe0\xb8\xad\xe0\xb8\x99\xe0\xb8\xa3\xe0\xb8\xb1\xe0\xb8\x9a");\n\nprinter.sendRaw(_bytes);\nRun Code Online (Sandbox Code Playgroud)\n\n但我得到了这个
\n\n\n\n我使用了下面建议的软件包,该软件包适用于泰语。我的 ESC/POS 打印机支持泰语代码页 96 和 255。96 人做错了,但 255 人完成了工作。底部对齐不匹配是因为打印泰语字符需要 3 …