这应该适合你:
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;