Last active
November 24, 2022 09:47
-
-
Save stdrc/ab006e9dfe64a613522b to your computer and use it in GitHub Desktop.
将 NSString 字符串转换成 Unicode 编码(形如 \u597d)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
+ (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