0

我正在尝试了解 Unichars。来自 Ascii 的 Unichars 似乎是一个更高级、更复杂的字符代码库。现在我正在构建一个简单的应用程序,它将接受代表 Unicode 的字符串“\u####”,这导致了我的第一个问题。什么是格式化Unicode的最佳方法,在网上搜索了这么久之后,我觉得我已经看到了很多方法。或者也许我只是还没有最好的概念。

让我们以回收符号为例。U+267B

我希望我的程序将其转换为实际符号并显示它?

然后 id 喜欢读入任何符号并将其转换回 Unicode?

我希望这很简单,但我正试图教给我自己......

感谢溢出!!!!

附言。MacBook Pro 上输入 Unicode 并显示相应符号的命令是什么?

4

1 回答 1

1

这应该适合你:

NSString *text = inputView.text; // For example "\u267B"
NSLog(@"%@", text);
// Output: \u267B
NSData *d = [text dataUsingEncoding:NSASCIIStringEncoding];
NSString *converted = [[NSString alloc] initWithData:d encoding:NSNonLossyASCIIStringEncoding];
NSLog (@"%@", converted);
// Output: ♻
outputView.text = converted;

NSNonLossyASCIIStringEncoding它使用将\uNNNN 解码为相应的 Unicode 字符的事实。

要在另一个方向转换(从“♻”到“\u267B”),你只需要 在上面的代码中交换NSASCIIStringEncoding和。NSNonLossyASCIIStringEncoding

更新:正如您正确注意到的那样,“反向”不会对 <= U+00FF 范围内的字符进行编码。以下代码也转换了这些字符:

NSString *text = inputView.text; // For example "♻A"
NSLog(@"%@", text);
// Output: ♻A
NSMutableString *converted = [NSMutableString string];
for (NSInteger i = 0; i < [text length]; i++) {
    unichar c = [text characterAtIndex:i];
    [converted appendFormat:@"\\u%04X", c];
}
NSLog (@"%@", converted);
// Output: \u267B\u0041
outputView.text = converted;
于 2013-07-20T19:19:45.307 回答