3

我必须将UTF-8包含意大利语句子的 Ruby 字符串编码到 ESC/POS 热敏打印机(仅接受 ASCII-8BIT(1 字节)字符集的打印机:http: //maxdb.sap.com/doc/7_6/ca /bd35406ee32e34e10000000a155106/content.htm)。

顺便说一句,我使用 Ruby 2.x(在 Windows 或 Linux 上)。我对如何转码感到困惑,

例如,假设包含在远程服务器上编码的 JSON UTF-8 中的字符串,或包含在模板文件中的字符串为:

#!/bin/env ruby
# encoding: utf-8

string = "Però non è la città di Barnabù"

我必须将字符串(重音/国际化 2 个字节)翻译成 1 个字节('ASCII8-BIT' 编码)

关于如何从 UTF-8 转换为 ASCII8-BIT 的任何建议?

我迷失了自己的方法,如:.force_encoding('ASCII-8BIT') 或 encode(") ...

编辑: 爱普生TM-T20打印机字符集表

非常感谢乔治

4

1 回答 1

1

我发现解决方案为:

string.encode "IBM437"

正如评论中所说,我重读了 Epson TM-T20 打印机;它设置了默认的“代码表”编号:0,意思是:“PC437:美国,标准欧洲”

事实上,我理解PC437是指 2Code Page 437',参见:en.wikipedia.org/wiki/Code_page_437

所以我找到了有趣的宝石:github.com/ConradIrwin/encoding-codepage

显示代码页437 对应于字符集 "IBM437"

现在打印机打印正确!我自己在这里回答也许可以帮助别人。

乔治

于 2014-04-23T05:38:59.193 回答