微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C Windows / Mac / iOS中的西班牙语字符

我在iOS应用程序中显示西班牙语字符时遇到一些问题.有问题的代码都是C,并在Windows应用程序和iOS应用程序之间共享.使用Visual Studio 2010在Windows中编译(字符集为多字节).并使用Mac上的Xcode 4.2进行编译.

目前,代码使用的是char指针,我首先想到的是我需要切换到wchar_t指针.但是,我注意到我想输出的西班牙语字符只在使用char指针的Windows中显示得很好.这让我觉得这些字符是多字节字符集的一部分,我不需要麻烦地将所有内容更新到wchar_t,直到我准备好做一些日语,俄语,阿拉伯语等翻译. .

不幸的是,虽然西班牙语角色在Windows应用程序中显示属性,但一旦它们到达Mac / iOS,它们就无法显示.在那里试验wchar_t,我发现如果我把所有东西都转换成它们就会正常显示.但是我不明白,并希望有人可以告诉我原因…为什么这些角色在Windows机器上完全有效,相同的代码,以及在Mac环境中作为胡言乱语(需要wchar_t代替)的推迟?

视觉工作室是否在Mac背景下对我的char指针做了些什么?换句话说,当我使用char指针而不是wchar_t时,Microsoft环境是否只是对我的架构疏忽更加宽容?

看来我已经知道我的答案是从char指针转换为wchar_t指针,我真正的问题是“为什么Mac需要wchar_t但是在Windows中我可以使用char来表示相同的字符?”

谢谢.

解决方法:

Mac和Windows使用不同的代码页 – 它们都有西班牙语字符可用,但它们显示为不同的字符值,因此每个平台上相同的字节将显示不同.

在跨平台代码库中处理本地化的最佳方法是UTF8. UTS8本身支持Nsstring -stringWithUTF8String:并且在Windows Unicode应用程序中通过使用CP_UTF8调用MultiBytetoWideChar.事实上,由于它是Unicode,你甚至可以使用相同的技术来处理更复杂的语言,如中文.

如果可以提供帮助,请不要在跨平台代码中使用宽字符.这很复杂,因为在OS X上wchar_t实际上是32位宽.事实上,由于这个原因,它也浪费了内存.

http://en.wikipedia.org/wiki/UTF-8

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐