iOS特殊字符,奇怪的问题
我有一个很奇怪的问题。 我大约三年前(iOS-SDK 3.0)创build了一个iOS应用程序,并从此开始了SDK 4.0和5.0。 从5.0(或者5.1)开始,我突然开始对德国特殊字符(äöüß)产生问题。
现在我甚至不能用特殊字符初始化一个NSString,这一行:
NSString *str = @"abcäxyz";
给出以下警告:
由于input字节不属于input代码集UTF-8,input转换停止
和这个:
NSLog(@"%@", strTemp);
得到:
ABC
所以它停在第一个特殊的字符。 在其他项目中一切都很好。 我可以用特殊的字符工作,没有任何问题。
这是一个configuration问题?
编辑:显然这是一个文件编码的问题。
文件-I myFile
给予:
文本/ X-C ++; 字符集=未知-8位
试图用iconv转换它给我:
从未知的8位转换不受支持
使用UTF-8代码初始化string时会发生什么? 像这样:
NSString *s = [NSString stringWithFormat:@"%C", 0xc39f]; // should be ß
据我所知,你也应该能够做到这一点,但还没有testing过:
NSString *s = [NSString stringWithUTF8String:"0xc39f"];
试试看看会发生什么。 周围有很多网站用UTF-8编码表来表示特殊字符,例如这个 。
只要你的文件被编码为UTF-8, @"abcäxyz"
应该没问题,但是embedded文字unicode字符的显式forms是\ u ????。
- (void)testGermanChar { NSString *expected = @"abc\u00E4xyz"; NSString *actual = @"abcäxyz"; STAssertEqualObjects(expected, actual, @"the two strings should be equivalent"); }
已解决:更改了Xcode中的文件编码:点击您想要更改编码的文件,然后打开右面板(这个窗格的名字是什么?任何想法?)来编辑属性。 在“文本设置”下可以看到“文字编码”。 就这些。