繁体   English   中英

在Ruby中将字符串从UTF-8转换为ASCII-8BIT?

[英]Transcoding a string from UTF-8 to ASCII-8BIT in Ruby?

我必须将包含意大利语语句的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(“)...

编辑: Epson TM-T20打印机的字符集表

非常感谢giorgio

我发现解决方案为:

string.encode "IBM437"

如评论所述,我重读了爱普生TM-T20打印机; 设置为默认的“代码表”数字:0,表示:“ PC437:美国,欧洲标准”

实际上,我了解PC437是指2代码页437',请参阅:en.wikipedia.org/wiki/Code_page_437

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

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

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

乔治

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM