Преобразование в предсоставленный Unicode
Q: Как я преобразовываю строку Unicode в ее предсоставленную форму?
A: Mac OS X и iOS обеспечивают множество APIs для преобразования в различные нормальные формы Unicode. Самыми простыми для использования являются методы NSString, показанные в Таблице 1.
Метод | Имя нормальной формы | Общее название |
|---|---|---|
- decomposedStringWithCanonicalMapping | D | анализируемый |
- precomposedStringWithCanonicalMapping | C | предсоставленный |
- decomposedStringWithCompatibilityMapping | KD |
|
- precomposedStringWithCompatibilityMapping | KC |
|
О нормальных формах
Определенные символы Unicode могут быть закодированы больше чем одним способом. Например, Á (Острое) может быть закодирован, любой предварительно сочинил, как U+00C1 (LATIN CAPITAL LETTER WITH ACUTE), или разложился как U+0041 U+0301 (LATIN CAPITAL LETTER сопровождаемый COMBINING ACUTE ACCENT). Предсоставленные символы более распространены в мире Windows, тогда как анализируемые символы более распространены на платформах Apple.
Можно найти намного больше информации о Unicode на консорциальном веб-сайте Unicode. В частности интереса Формы нормализации Unicode Приложения № 15 Стандарта Unicode.
Используя нормальные формы правильно
При работе в наших платформах Вы будете использовать смесь предсоставленного и анализируемого Unicode. Например, HFS Плюс преобразования все имена файлов к анализируемому Unicode, в то время как клавиатуры Macintosh обычно производят предварительно составленный Unicode. Это не проблема, пока Вы используете предоставленный системой APIs для текста процесса. APIs Apple правильно обрабатывает и предварительно составленный и анализируемый Unicode.
Когда Вы взаимодействуете с другими платформами, Однако Вы, возможно, должны преобразовать в предсоставленный Unicode. Например, следующее все допустимые причины, почему Вы могли бы хотеть преобразовать в предсоставленный Unicode:
Если Вы реализуете сетевой протокол, определяющийся для использования предварительно составленного Unicode.
При создании межплатформенного файла (или объем), чья спецификация диктует предварительно составленный Unicode.
При слиянии крупной организации межплатформенного кода в приложение где тот код ожидает предварительно составленный Unicode.
История версии документа
| Дата | Примечания |
|---|---|
| 14.09.2011 | Переписанный для фокусирований на современных методах. |
| 07.02.2003 | Новый документ, описывающий, как преобразовать строку в предсоставленный Unicode. |