Может кто-нибудь сказать мне, как преобразовать значение UTF-8 в значение UCS-2 в Objective-c? - PullRequest
3 голосов
/ 06 августа 2011

Я пытаюсь преобразовать строку UTF-8 в строку UCS-2.Мне нужно получить строку типа "\ uFF0D \ uFF0D \ u6211 \ u4E0A \ u7F51 \ u4E3B \ u9875".Я уже около месяца гуглю, но до сих пор нет упоминаний о преобразовании UTF-8 в UCS-2.Пожалуйста, кто-нибудь, помогите мне.Спасибо заранее.

РЕДАКТИРОВАТЬ: хорошо, возможно, мое объяснение было недостаточно хорошо.Вот что я пытаюсь сделать.Я живу в Корее и пытаюсь отправить смс-сообщение с помощью CTMessageCenter.Я пытался отправить китайский упрощенный символ через мое приложение.И я получаю ????Вместо правильных персонажей.Поэтому я попробовал UTF-8, UTF-16, BE и LE, а также.Но все они возвращаются ??Наконец, я узнал, что SMS использует кодировку UCS-2 и EUC-KR в Корее.Странно, не правда ли?В любом случае я пытался отправить строку, как \ u4E3B \ u9875, и это сработало.Поэтому мне нужно сначала преобразовать строку в кодировку UCS-2 и получить строковый литерал из этих строк.

Ответы [ 2 ]

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

Википедия :

Старая версия UCS-2 (2-байтовый универсальный набор символов) представляет собой аналогичную кодировку символов, которая была заменена UTF-16 в версии 2.0Стандарт Unicode в июле 1996 года. 2 Он создает формат фиксированной длины, просто используя кодовую точку в качестве 16-битной кодовой единицы, и дает точно такой же результат, как UTF-16, для 96,9% всего кодаточки в диапазоне 0-0xFFFF, включая все символы, которым было присвоено значение в то время.

IBM :

Поскольку UCSСтандарт -2 ограничен 65 535 символами, а индустрии обработки данных требуется более 94 000 символов, стандарт UCS-2 находится в процессе замены стандартом Unicode UTF-16.

Однако, поскольку UTF-16 является расширенным вариантом существующего стандарта UCS-2, вы можете разрабатывать свои приложения, используя системы, которые поддерживают UCS-2, при условии, что ваши приложения обрабатывают UCS-2, как если бы это был UTF-16.

uincode.org :

UCS-2 является устаревшей терминологией, которая относится к реализации Unicode вплоть до Unicode 1.1, до того, как суррогатные кодовые точки и UTF-16 были добавлены к версии 2.0 стандарта.,Этот термин теперь следует избегать.

UCS-2 не определяет отдельный формат данных, потому что UTF-16 и UCS-2 идентичны в целях обмена данными.Оба являются 16-битными и имеют одинаковое представление кодовых единиц.

Таким образом, использование преобразования "UTF8toUnicode" в большинстве языковых библиотек приведет к созданию UTF-16, который по сути является UCS-2.И простое извлечение 16-битных символов из строки Objective-C приведет к тому же самому.

Другими словами, решение все время сводило вас с лица.

0 голосов
/ 06 августа 2011

UCS-2 не является допустимой кодировкой Unicode.UTF-8 - это.

Поэтому невозможно преобразовать UTF-8 в UCS-2 - и действительно, также наоборот.

UCS-2 - мертвая, древняя история.Пусть это гниет в мире.

...