在cocos2d中使用UIFont时,如何防止土耳其语字母掉落?

时间:2013-04-30 03:25:15

标签: internationalization cocos2d-iphone uikit turkish

我正在执行以下操作来创建一个标签,我将其用作照片归属的一部分:

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应用中显示不正确;土耳其字母丢失了。

如何创建一个标签,该标签将使用上述网址中的文字?


修改

没关系......问题在于从Excel导出。请参阅以下答案的评论。此链接提供了一些其他信息:Excel to CSV with UTF8 encoding


其他编辑:

实际上,即使我正确导出并确认我在CSV文件中有正确的UTF-8(或16?)字母,它仍然是一个问题。例如,这个字符串:

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

显示如下:

incorrect turkish characters

和这个字符串:

Christian Mehlführer / CC-BY 2.5

显示如下:

enter image description here

导入时肯定会对其进行不正确的处理,因为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导入级别的根本原因?


解决方案如下。

2 个答案:

答案 0 :(得分:1)

有几个问题:

  1. Mac上的Excel无法正确导出UTF-8。我使用的解决方案是将数据粘贴到Google电子表格中并从那里导出。更多信息:Excel to CSV with UTF8 encoding

  2. 我意识到,一旦我在CSV文件中获得了正确的数据,我就会使用不正确的设置导入它。我正在使用parseCSV,需要将_encoding方法中的-init设置为NSUTF8StringEncoding,而不是默认值NSISOLatin1StringEncoding

答案 1 :(得分:0)

如果你试试这个:

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

它可能会更好。我怀疑你的url字符串是转义HTML。