Skip to content

Instantly share code, notes, and snippets.

@stdrc
Last active November 24, 2022 09:47
Show Gist options
  • Save stdrc/ab006e9dfe64a613522b to your computer and use it in GitHub Desktop.
Save stdrc/ab006e9dfe64a613522b to your computer and use it in GitHub Desktop.
将 NSString 字符串转换成 Unicode 编码(形如 \u597d)
+ (NSString *)unicodeStringWithString:(NSString *)string {
NSString *result = [NSString string];
for (int i = 0; i < [string length]; i++) {
result = [result stringByAppendingFormat:@"\\u%04x", [string characterAtIndex:i]];
/*
因为 Unicode 用 16 个二进制位(即 4 个十六进制位)表示字符,对于小于 0x1000 字符要用 0 填充空位,
所以使用 %04x 这个转换符, 使得输出的十六进制占 4 位并用 0 来填充开头的空位.
*/
}
return result;
}
+ (NSString *)stringWithUnicodeString:(NSString *)string {
NSArray *strArray = [[string substringFromIndex:2] componentsSeparatedByString:@"\\u"];
NSString *result = [NSString string];
for (NSString *str in strArray) {
NSString *tmpStr = [@"0x" stringByAppendingString:str];
unichar c = strtoul([tmpStr UTF8String], 0, 0);
/*
上面两行也可以写成下面一行:
unichar c = strtoul([str UTF8String], 0, 16);
*/
result = [result stringByAppendingString:[NSString stringWithCharacters:&c length:1]];
}
return result;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment