Ruby解码字符串

时间:2018-05-22 12:11:21

标签: ruby string utf-8

在Ruby中如何获得:

"b\x81rger"提供字符串"bürger"

我需要在Zebra打印机上打印特殊字符,我可以看到"b\x81rger"打印"bürger",但发送"bürger"不能打印正确的字符。

1 个答案:

答案 0 :(得分:5)

原来是 CP850

正确的解决方案(Ruby 2.5 +)

规范化unicode字符串,然后将其编码为CP850

"bürger".unicode_normalize(:nfc).encode(Encoding::CP850)
#⇒ "b\x81rger"

适用于特殊字符和组合变音符号。

后备解决方案(Ruby 2.5 - )

编码并祈祷它是一个复合的变音符号:

"bürger".encode(Encoding::CP850)
#⇒ "b\x81rger"