Кодировка UTF-8 в Ruby с использованием переменной - PullRequest
0 голосов
/ 11 августа 2011

Я использую Ruby 1.8.7 (и обновление не вариант).Я хотел бы создать строку всех кодовых точек UTF-8 от 0 до 127, написанную как «\ uXXXX».

Моя проблема заключается в том, что это интерпретируется как (например): «u0008».Если я пытаюсь использовать «\ u0008», строка становится «\ u0008», а это НЕ то, что я хочу.

Я пробовал много разных способов, но кажется, что невозможно создать строку, которая является просто «\ uXXXX "т.е."\ U000B".это всегда либо «\ u000B», либо «u000B»

Экранирование «\» не вариант.Мне нужно отправить строку на сервер, например, чтобы сервер получил \ u000B.Это так, что другой сервер может проверить синтаксический анализ \ uXXXX.Однако в Ruby это невозможно сделать.

Рад, если кто-то может доказать, что я неправ:)

1 Ответ

2 голосов
/ 11 августа 2011

Используйте Integer #chr, чтобы получить персонажа. Вот чистая версия:

(1..127).each do |i|
  value << "U+#{i} = #{i.chr}, hex = \\x#{"%02x" % i}; "
end

"%02x" % i равно sprintf("%02x", i). Возвращает целое число в виде двухзначного шестнадцатеричного числа.

Экранированный вывод (см. Комментарии):

(1..127).each do |i|
  value << "U+#{i} = \\u#{"%04x" % i}, hex = \\x#{"%02x" % i}; "
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...