【问题标题】:How to support Cyrillic in an iPhone/iPad app?如何在 iPhone/iPad 应用程序中支持 Cyrillic?
【发布时间】:2011-02-09 23:52:17
【问题描述】:

我在 App Store 上有一个使用所有标准 UIKit 控件的简单程序,现在一些评论者抱怨不支持西里尔文和韩文? UIKit 控件是否不使用开箱即用的 Unicode?​​p>

我该如何解决这个问题?

【问题讨论】:

  • 您是否在您的测试设备上启用了西里尔文和韩文键盘并重现了该错误?他们在抱怨什么样的错误?碰撞?奇怪的字符?

标签: iphone cocoa-touch ipad localization internationalization


【解决方案1】:

所有 Cocoa NS/CFString 都符合 Unicode(内部为 UCS-2),包括俄语和韩语字母。因此,除非您的数据在某些时候通过单字节字符格式(例如 C char[] 字符串)传递,否则应该自动支持所有合理的语言和字符集。请注意您的存储和有线格式;这就是 ASCII 通常潜伏的地方。

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

而且,就像 CajunLuke 所说,首先要重现问题。如果您需要“lorem ipsum”类型的文本,请从相应的 Wikipedia 复制并粘贴一些随机的废话。

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

【讨论】:

  • 我正在使用 JSON REST Web 服务来联系 google 任务,所以我认为它必须是内容类型标头。我应该使用哪一个来支持所有语言?
  • 你通常不能“使用”一个 - 内容类型和字符集是服务器发送给你的东西,反之亦然。您分析响应附带的内容类型,提取字符集,从 Cocoa 支持的编码列表中选择最合适的编码。如果 Google Tasks 允许您以某种方式选择编码,请使用 UTF-8。
【解决方案2】:

我昨天刚刚测试了日语 - 它在“开箱即用”的模拟器中工作(对于预定义的文本字符串,如 Cancel 和 Done)。检查系统偏好设置 > 语言和文本,我发现我支持多种语言(我在安装操作系统时故意这样做)。

我假设您已经阅读过 Apple 的 Internationalization Programming Topics

要查看本地化文本,您(大部分情况下)必须自己创建并将其放入 Localizable.strings 和 .XIB 文件中;你会想要阅读 NSLocalizedString()。

【讨论】:

    猜你喜欢
    • 2014-11-21
    • 1970-01-01
    • 2012-03-25
    • 2012-02-27
    • 2014-03-12
    • 1970-01-01
    • 1970-01-01
    • 2013-08-18
    相关资源
    最近更新 更多