我想了解Unichars。来自Ascii,Unichars似乎是一个更高级和更复杂的字符代码库。现在我正在构建一个简单的应用程序,它将接受一个代表Unicode的字符串“\ u ####”,这引出了我的第一个问题。格式化Unicode的最佳方法是,在搜索网页这么久之后,我觉得我已经看到很多方法可以做到这一点。或者我可能还没有最好的概念。
让我们以循环符号为例。 U + 267B
我希望我的程序将其转换为实际符号,然后显示它?
然后id喜欢读入任何符号并将其转换回Unicode? p>
我希望这很简单,但我想把这个教给我自己......
谢谢OverFlow !!!!
PS。什么是MacBook Pro上的命令输入Unicode并显示相应的符号?
答案 0 :(得分: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;