尝试将包含转义的unicode(例如:\ u3400)的字符串转换为U + 20000到U + 2B81F以形成URL,但它不起作用。 U + 3400到U + 9FFF的范围很好。
NSString *string1 = @"\u9FFF";
string1 = [string1 stringByReplacingPercentEscapesUsingEncoding:NSUnicodeStringEncoding];
NSURL *url1 = [NSURL URLWithString:[NSString stringWithFormat:@"http://en.wikipedia.org/Search?search=%@", string1]];
NSLog(@"url1: %@", url1);
输出:url1:http://en.wikipedia.org/Search?search=%E9%BF%BF
NSString *string2 = @"\u20000";
string2 = [string2 stringByReplacingPercentEscapesUsingEncoding:NSUnicodeStringEncoding];
NSURL *url2 = [NSURL URLWithString:[NSString stringWithFormat:@"http://en.wikipedia.org/Search?search=%@", string2]];
NSLog(@"url2: %@", url2);
OUTPUT :url2:(null)
基本上,我想要的是将转义的unicodes列表(\ u3400转换为\ u2B81F)转换为URL(甚至是NSStrings)。如果有其他方法可以通过其他字符串转换方式实现这一点,我将非常感激。
答案 0 :(得分:1)
当NSString已经是UTF-8编码时,我不知道为什么要尝试解除Unicode char的转义:
编辑:我知道了!它肯定不是NSLog(),但它不是(null),这就是最重要的。const char * str = "\0xF0\0xA0\0x80\0x80";
NSString *string2 = [NSString stringWithUTF8String:str];
NSURL *url2 = [NSURL URLWithString:[NSString stringWithFormat:@"http://en.wikipedia.org/Search?search=%@", string2]];
NSLog(@"url2: %@", string2);