// 字符串 转Unicode
- (NSString *)utf8ToUnicode:(NSString *)string {
NSUInteger length = [string length];
NSMutableString *str = [NSMutableString stringWithCapacity:0];
for (int i = 0; i < length; i++) {
NSMutableString *s = [NSMutableString stringWithCapacity:0];
unichar _char = [string characterAtIndex:i];
// 判断是否为英文和数字
if (_char <= '9' && _char >='0') {
[s appendFormat:@"%@", [string substringWithRange:NSMakeRange(i, 1)]];
}
else if(_char >='a' && _char <= 'z') {
[s appendFormat:@"%@", [string substringWithRange:NSMakeRange(i, 1)]];
}
else if(_char >='A' && _char <= 'Z') {
[s appendFormat:@"%@", [string substringWithRange:NSMakeRange(i, 1)]];
}
else {
// 中文和字符
[s appendFormat:@"\\u%x", [string characterAtIndex:i]];
// 不足位数补0 否则解码不成功
if(s.length == 4) {
[s insertString:@"00" atIndex:2];
}
else if (s.length == 5) {
[s insertString:@"0" atIndex:2];
}
}
[str appendFormat:@"%@", s];
}
return str;
}
// Unicode 转字符串
- (NSString *)replaceUnicode:(NSString *)unicodeStr {
NSString *tempStr1 = [unicodeStr stringByReplacingOccurrencesOfString:@"\\u" withString:@"\\U"];
NSString *tempStr2 = [tempStr1 stringByReplacingOccurrencesOfString:@"\"" withString:@"\""];
NSString *tempStr3 = [[@"\"" stringByAppendingString:tempStr2] stringByAppendingString:@"\""];
NSData *tempData = [tempStr3 dataUsingEncoding:NSUTF8StringEncoding];
NSString *returnStr = [NSPropertyListSerialization propertyListFromData:tempData
mutabilityOption:NSPropertyListImmutable
format:NULL
errorDescription:NULL];
return [returnStr stringByReplacingOccurrencesOfString:@"\r\n" withString:@"\n"];
}
NSString *unicode = [self utf8ToUnicode:@"💵"];
GCLog(@"9999 == %@", unicode);
unicode = [self replaceUnicode:@"\\u0023"];
GCLog(@"9999 == %@", unicode);
NSMutableString *all_str = [[NSMutableString alloc] init];
for (NSInteger index = 0x0250; index < 0x02AF; index++) {
NSString *hex_str = [self decimalToHex:index];
hex_str = [NSString stringWithFormat:@"\\u%@", hex_str];
unicode = [self replaceUnicode:hex_str];
if (unicode && unicode.length) {
GCLog(@"9999 == %@", unicode);
[all_str appendString:unicode];
[all_str appendString:@" "];
}
}