Чтение значения plist utf-8 как utf-16 - PullRequest
2 голосов
/ 12 мая 2009

Я работаю над приложением для iphone, которое должно отображать верхние и нижние индексы. Я использую средство выбора для чтения данных из списка, но значения Юникода не отображаются правильно в окне выбора. Подстрочные и надстрочные индексы не распознаются. Я предполагаю, что это связано с кодировкой plist как utf-8, поэтому вопрос заключается в том, как преобразовать кодировку строки plist из utf-8 в utf-16?

Еще немного уточнений:

Если я это сделаю, он будет отображаться правильно, по крайней мере, в текстовом поле:

NSString * уравнение = @ "x \ u00B2 + y \ u00B2 = z \ u00B2"

Однако, если я определю ту же строку в листе и попытаюсь прочитать ее, присвоить ей строку и отобразить ее в окне выбора, он просто отобразит кодировку, а не верхние индексы.

@ Мэтт: спасибо за ваше предложение, экранируется юникод, который является \ u00B2 => \ u00B2. Поиск в Google для «экранированных значений в списках» не дал никаких полезных результатов, и я не смог использовать клавиатуру cmd-ctrl-shift- + для работы. Буду признателен за любые дальнейшие предложения !!

Ответы [ 4 ]

4 голосов
/ 14 мая 2009

Варианты \ u работают только при представлении компилятору C. Для UTF-8, если вы действительно хотите набирать коды символов, а не просто набирать их (дополнением к палитре символов является средство просмотра клавиатуры, которое будет обновляться при нажатии клавиш-модификаторов, чтобы вы могли искать конкретные символы таким образом), затем вам придется использовать XML-сущности, т.е. ².

0 голосов
/ 24 апреля 2010

Не работает с более длинным юникодом, как

𢌾

заголовок plist:

<?xml version="1.0" encoding="UTF-8"?>
     2 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
     3 <plist version="1.0">
0 голосов
/ 13 мая 2009

После дня эксперимента я случайно наткнулся на символ OSX. Это работает хорошо, хотя и немного утомительно ... Я все же хотел бы узнать, как встраивать коды в текст в виде списка.

0 голосов
/ 13 мая 2009

Файлы Plist автоматически встраивают свою собственную кодировку. i.e.:

<?xml version="1.0" encoding="UTF-8"?>

Это означает, что, независимо от того, являются ли они UTF-8, UTF-16 или нет, они будут загружены правильно.

Если у вас возникли проблемы с загрузкой из списка, это должно быть что-то еще. Попробуйте использовать:

NSLog(@"%@", [[[NSDictionary alloc] initWithContentsOfFile:@"/path/to/plist"] autorelease]);

для вывода всего списка в качестве отправной точки для поиска проблемы.

Если вам интересно узнать о кодировках, вы можете изменить их, открыв их как текстовый файл в Xcode (щелкните правой кнопкой мыши в дереве файлов и выберите «Открыть как ...»), а затем воспользуйтесь меню «Вид» -> «Текст» -> «Кодировка файла». меню для изменения кодировки файла (вам нужно исправить кодировку XML для соответствия).

...