1

对于你们中的一些人(我敢肯定),这个问题很容易回答,但我在理解如何解决这个问题时遇到了一些困难。

我有一个包含如下表格的 .txt 文件:

" 236 ? 26 x00EE 16

正如您可能理解的那样,左列列出了符号,而右列列出了我在我的应用程序中定义的一些代码。

而且……您可能明白,在符号中,有一些“奇怪”。0x00EE 应该是“å”(上面有一个环)。

不幸的是我无法控制左栏,即它来自另一个软件。做了一些实验,我发现:

NSLog( @"\x00ee" );

例如产生警告,告诉 hte 代码不属于 UTF-8 范围。

所以我在徘徊如何将 NSString @"\x00ee" (我从文件中读取,由 6 个字符组成的字符串)转换为唯一的 unicode 字母“å”(上面有一个环)。

谁能帮我?

谢谢...

4

2 回答 2

2

您需要找出使用了什么字符集编码。0xEE 是 î 的 unicode。在 Unicode 中,å 是 E5。这以 UTF-8 编码为序列 0xC3 0xA5。以下对我有用:

    NSLog(@"\xc3\xa5");
于 2013-04-25T07:18:30.293 回答
1

NSNonLossyASCIIStringEncoding如果您的输入字符串仅包含 ASCII 字符,那么您可以使用解码\uNNNN为相应 Unicode 字符的事实 :

NSString *s = @"\\x00ee"; // from your text file
NSString *s1 = [s stringByReplacingOccurrencesOfString:@"\\x" withString:@"\\u"];
NSData *d = [s1 dataUsingEncoding:NSASCIIStringEncoding];
NSString *s2 = [[NSString alloc] initWithData:d encoding:NSNonLossyASCIIStringEncoding];
NSLog (@"%@", s2);

输出:î,即 U+00EE(带有圆形的拉丁小写字母 I)。

(注:å是 U+00E5,不是 U+00EE)。

于 2013-04-25T07:18:19.160 回答