2010-07-06 2 views
2

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

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

В чем смысл обратной косой черты (\)?

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

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

ответ

2

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

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

require 'json' 

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

Печать:

一 
二 
0

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

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

4

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

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

Смежные вопросы