Рубиновая декодирующая строка - PullRequest
0 голосов
/ 22 мая 2018

В Ruby как я могу получить:

"b\x81rger", предоставив строку "bürger".

Мне нужно напечатать специальные символы на принтере Zebra, я вижу, что "b\x81rger" печатает "bürger", но при отправке "bürger" не печатается правильный символ.

1 Ответ

0 голосов
/ 22 мая 2018

Оказывается, это CP850.

Правильное решение (Ruby 2.5 +)

Нормализовать строку в Юникоде и затем кодировать ее вCP850:

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

Работает как для специальных символов, так и для комбинированных диакритических знаков.

Резервное решение (Ruby 2.5 -)

Кодировать и молитьсяэто умлаут:

"bürger".encode(Encoding::CP850)
#⇒ "b\x81rger"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...