iOS特殊角色,奇怪的问题

iOS特殊角色,奇怪的问题,ios,cocoa-touch,nsstring,special-characters,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 所以它在第一个特殊字符处

我有一个很奇怪的问题。大约三年前,我启动了一个iOS应用程序(iOS SDK 3.0),从那时起,我就开始使用SDK 4.0和5.0。从5.0(或者可能是5.1)开始,我突然开始对德语特殊字符(äöüß)产生问题

现在我甚至不能用特殊字符初始化NSString,这一行:

NSString *str = @"abcäxyz";
给出以下警告:

由于输入字节不属于输入代码集UTF-8,输入转换停止

还有这个:

NSLog(@"%@", strTemp);
给出:

abc

所以它在第一个特殊字符处停止。在其他项目中,一切都很好。我可以与特殊角色一起工作,没有任何问题

这是配置问题吗

编辑:显然这是文件编码的问题。

文件-I我的文件


正在给予:

text/x-c++;charset=unknown-8bit

尝试使用iconv转换它会给我:

不支持从未知到8位的转换


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

 NSString *s = [NSString stringWithFormat:@"%C", 0xc39f]; // should be ß 
据我所知,您也应该能够做到这一点,但尚未对其进行测试:

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

试试这些,看看会发生什么。有许多网站为特殊字符保留UTF-8代码表,例如,

只要您的文件编码为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");
}

已解决:更改了Xcode中的文件编码:
单击要更改编码的文件,然后打开右侧面板(该窗格的名称是什么?有什么想法吗?)编辑属性。在这里,您可以在“文本设置”下看到“文本编码”。仅此而已。

确保源代码保存为UTF-8.Xcode->首选项->文本编辑->默认文本编码。确保设置为UTF-8,如果不是,您可能需要再次以该编码保存所有文件。也许您的旧项目以某种方式保存在错误的编码中,而默认值现在是正确的。它说:默认文本编码:Unicode(UTF-8)尝试测试您的源文件,在终端中出现错误,使用“file-I(大写字母I)SourceFile.m”可以得到类似SourceFile.m:text/x-c++;charset=utf-8开始前:text/x-c++;charset=unknown-8bit,因此尝试使用iconv转换它会给出:iconv:unknown-8bit unsupported0xc39f的转换顺序是错误的,但它仍然会给出一些东西。我仍然无法理解为什么这种情况只发生在这个项目中,而不发生在新的项目中。@pille第二个是错误的,它将字符串初始化为文字“0x39f”。你应该改为写@“\x039f”。你把它改成了什么,怎么改?