iOS特殊字符,奇怪的问题

时间:2012-09-07 09:44:42

标签: ios cocoa-touch nsstring special-characters

我有一个非常奇怪的问题。我大约三年前开始使用iOS应用程序(iOS-SDK 3.0),从那时起就开始使用SDK 4.0和5.0。从5.0(或5.1)开始,我突然开始遇到德国特殊字符(äöüß)的问题。

现在我甚至无法使用特殊字符初始化NSString,这一行:

NSString *str = @"abcäxyz";

发出以下警告:

  

由于输入字节不属于输入代码集UTF-8

,输入转换停止

这一个:

NSLog(@"%@", strTemp);

给出:

  

ABC

所以它停在第一个特殊字符处。在其他项目中一切都很好。我可以毫无问题地使用特殊字符。

这是配置问题吗?

编辑:显然文件编码存在问题。

  

file -I myFile

给予:

  

文本/ X-C ++;字符集=未知-8位

尝试用iconv转换它给我:

  

从unknown-8bit转换不受支持的

3 个答案:

答案 0 :(得分:1)

使用UTF-8代码初始化字符串会发生什么?像这样:

 NSString *s = [NSString stringWithFormat:@"%C", 0xc39f]; // should be ß 

据我所知,您也应该能够这样做,但尚未对其进行测试:

  NSString *s = [NSString stringWithUTF8String:"0xc39f"];

试试这些,看看会发生什么。周围有许多站点可以保留特殊字符的UTF-8代码表,例如: this one

答案 1 :(得分:1)

只要你的文件是UTF-8编码,@"abcäxyz"应该没问题,但是嵌入文字unicode字符的显式形式是\ u ????。

- (void)testGermanChar
{
    NSString *expected = @"abc\u00E4xyz";
    NSString *actual = @"abcäxyz";
    STAssertEqualObjects(expected, actual, @"the two strings should be equivalent");
}

答案 2 :(得分:0)

已解决:更改了Xcode中的文件编码: 单击要更改其编码的文件,然后打开右侧面板(实际上这个窗格的名称是什么?任何想法?)来编辑属性。在那里,您会看到“文本设置”下的“文本编码”。就是这样。