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中的文件编码:点击您想要更改编码的文件,然后打开右面板(这个窗格的名字是什么?任何想法?)来编辑属性。 在“文本设置”下可以看到“文字编码”。 就这些。