Получение значения строки - PullRequest
2 голосов
/ 06 июля 2010

У меня есть следующая строка "\u3048\u3075\u3057\u3093". Я получил строку с веб-страницы как часть возвращаемых данных в JSONP.

Что это? Это похоже на UTF8, но тогда это должно выглядеть как "U+3048U+3075U+3057U+3093"?

Что означает обратная косая черта (\)?

Как я могу преобразовать его в удобочитаемую форму?

Я ищу решение с помощью Ruby, но любое объяснение того, что здесь происходит, приветствуется.

Ответы [ 3 ]

4 голосов
/ 06 июля 2010

Синтаксис U+3048 обычно используется для представления кодовой точки Unicode символа. Такая кодовая точка является фиксированной и не зависит от кодировки (UTF-8, UTF-32 ...).

Строка JSON состоит из символов Юникода, кроме двойной кавычки, обратной косой черты и символов в диапазоне от U + 0000 до U + 001F (управляющие символы). Символы могут быть представлены escape-последовательностью, начинающейся с \u и сопровождаемой 4 шестнадцатеричными цифрами, которые представляют кодовую точку Unicode символа. Это синтаксис JavaScript (JSON является его подмножеством). В JavaScript обратная косая черта используется как escape-символ.

2 голосов
/ 06 июля 2010

Это Unicode, но не в UTF-8, это в UTF-16. Вы можете игнорировать суррогатные пары и считать их 4-значными шестнадцатеричными кодовыми точками символа кода Unicode.

Использование Ruby 1.9:

require 'json'

puts JSON.parse("[\"\\u4e00\",\"\\u4e8c\"]")

Печать:

一
二
0 голосов
/ 06 июля 2010

Символы Юникода в JSON экранируются как обратная косая черта u, за которой следуют четыре шестнадцатеричные цифры. Смотрите производство строк на json.org .

Любой анализатор JSON преобразует его в правильное представление для вашей платформы (если нет, то по определению это не анализатор JSON)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...