Как предотвратить падение турецких букв при использовании UIFont в cocos2d?

Я делаю следующее, чтобы создать метку, которую я использую как часть атрибуции для фотографии:

CCLabelTTF *imageSourceLabel = [CCLabelTTF labelWithString:[_organism imageSource] fontName:[[UIFont systemFontOfSize:12] fontName] fontSize:12];

Некоторые источники изображений содержат турецкие буквы. Например, в этом URL:

http://commons.wikimedia.org/wiki/File:Şahlûr-33.jpg

Это неправильно отображается в моем приложении для iPad; турецкие буквы отсутствуют.

Как создать метку, которая будет работать с текстом, подобным приведенному выше URL-адресу?


Изменить:

Неважно... проблема с экспортом из Excel. Смотрите комментарии к ответу ниже. Эта ссылка содержит дополнительную информацию: Excel в CSV с кодировкой UTF8


Дополнительное редактирование:

На самом деле, это все еще проблема, даже после того, как я правильно экспортировал и убедился, что у меня есть правильные буквы UTF-8 (или 16?) в файле CSV. Например, эта строка:

Dûrzan cîrano / CC BY-SA 3.0

Отображается следующим образом:

неверные турецкие символы

и эта строка:

Christian Mehlführer / CC-BY 2.5

отображается так:

введите здесь описание изображения

Он определенно неправильно обрабатывается при импорте, так как CCLOG генерирует следующее:

Photo Credit: Dûrzan cîrano / CC BY-SA 3.0

Дополнительная информация:

После импорта я сохраняю следующее значение в виде строки в массиве:

"Christian Mehlf\U00c3\U00bchrer / CC-BY 2.5"

Википедия говорит, что значение UTF-8 для ü в шестнадцатеричном формате равно C3 BC. Похоже, что c3bc там есть, но замаскированный под \U00c3\U00bc.

Есть ли способ правильно преобразовать это? Или что-то принципиально сломано на уровне импорта CSV?


Решение приведено ниже.


person Clay    schedule 30.04.2013    source источник


Ответы (2)


Было несколько проблем:

  1. Excel на Mac неправильно экспортирует UTF-8. Решение, которое я использовал, заключалось в том, чтобы вставить данные в электронную таблицу Google и экспортировать оттуда. Подробнее здесь: Excel в CSV с кодировкой UTF8

  2. Я понял, что когда у меня были правильные данные в CSV-файле, я импортировал их с неправильными настройками. Я использую parseCSV, и мне нужно установить _encoding в методе -init на NSUTF8StringEncoding вместо значения по умолчанию, NSISOLatin1StringEncoding .

person Clay    schedule 30.04.2013

если вы попробуете это:

[CCLabelTTF labelWithString:[[_organism imageSource] stringByUnescapingHTML] fontName:[[UIFont systemFontOfSize:12] fontName] fontSize:12];

это, вероятно, будет работать лучше. Я подозреваю, что ваша строка URL-адреса экранирована HTML.

person Joshua Smith    schedule 30.04.2013
comment
Доступен ли stringByUnescapingHTML на iOS? - person Clay; 30.04.2013
comment
На самом деле -- типа неважно... Я импортирую строку из файла .csv, экспортированного из Excel. Символы правильные в Excel, но они неверны после экспорта в файле .csv. Следовательно, проблема не имеет ничего общего с cocos2d. Тем не менее, я не уверен, как решить проблему с экспортом из Excel. Спасибо. - person Clay; 30.04.2013
comment
csv - это текстовый формат, если вы не можете указать Excel экспортировать в формат utf16 (невозможно?), вам нужно использовать другой подход, возможно, openoffice может это сделать. Также проверьте это: stackoverflow.com/questions/13019620/ - person LearnCocos2D; 30.04.2013
comment
@LearnCocos2D Спасибо за ссылку. Похоже, что импорт файла Excel в электронную таблицу Google и экспорт оттуда в CSV тоже могут работать. Этот вопрос актуален: stackoverflow.com/questions /4221176/ - person Clay; 30.04.2013
comment
@LearnCocos2D Я предоставил дополнительную информацию внизу исходного вопроса. Есть еще идеи? Спасибо. - person Clay; 30.04.2013