如何在iPhone/iPad应用程序中支持西里尔字母?

3

我在App Store上发布了一个使用所有标准UIKit控件的简单程序,现在一些评论者抱怨不支持西里尔文和韩文? UIKit控件默认不使用Unicode吗?

我该如何解决这个问题?


你在测试设备上启用了西里尔字母和韩文键盘,并重现了这个 bug 吗?他们抱怨的是哪种类型的 bug?崩溃?奇怪的字符? - Cajunluke
2个回答

2

所有Cocoa NS/CFStrings都符合Unicode标准(内部使用UCS-2),包括俄语和韩语字母。因此,除非您的数据在某个时刻经过单字节字符格式(例如C中的char[]字符串),否则所有合理的语言和字符集都应该得到自动支持。请仔细注意存储和传输格式;这通常是ASCII字符隐藏的地方。

如果从Web或基于HTTP的API下载数据,请密切关注Content-Type头中的字符集。在从NSData或原始内存块转换为NSString时,编码总是其中之一参数。

正如CajunLuke所说,首先要复现问题。如果您需要“lorem ipsum”类型的文本,请从相应的维基百科中复制并粘贴一些随机无意义的内容。

我在商店中有一个需要同时处理俄语和日语的应用程序(它是一本日俄词典)。没有采取任何特殊措施确保国家字符集支持;但是,每当使用单字节字符串时,我会记住它使用的字符集。


我正在使用JSON REST Webservice与Google任务进行通信,因此我认为这必须是content-type头。我应该使用哪个来支持所有语言? 我正在使用JSON REST Webservice与Google任务进行通信,因此我认为这必须是content-type头。我应该使用哪个来支持所有语言? - Kristof
通常情况下,你无法“使用”一个内容类型和字符集。这些是服务器发送给你的,而不是相反。你需要分析响应中传输的内容类型,提取字符集并从Cocoa支持的编码列表中选择最合适的编码方式。如果Google Tasks允许你以某种方式选择编码,请使用UTF-8。 - Seva Alekseyev

0

昨天我刚测试了一下日语 - 它可以在模拟器中“开箱即用”地处理预定义的文本字符串,例如“取消”和“完成”。检查“系统偏好设置 > 语言与文字”,我发现我有很多支持的语言(这是我安装操作系统时故意选择的)。

我假设你已经阅读了苹果公司的国际化编程主题

要查看本地化文本,您大部分时间需要自己创建并将其放入Localizable.strings和.XIB文件中;您还需要了解NSLocalizedString()。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接