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

相关文章

Windows2012R2备用域控搭建 前置操作 域控主域控的主dns:自...
主域控角色迁移和夺取(转载) 转载自:http://yupeizhi.blo...
Windows2012R2 NTP时间同步 Windows2012R2里没有了internet时...
Windows注册表操作基础代码 Windows下对注册表进行操作使用的...
黑客常用WinAPI函数整理之前的博客写了很多关于Windows编程的...
一个简单的Windows Socket可复用框架说起网络编程,无非是建...