0

尝试将包含 U+20000 到 U+2B81F 范围内的转义 unicode(例如:\u3400)的字符串转换为 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);

输出:url2:(空)

基本上,我想要的是将转义的 unicode 列表(\u3400 到 \u2B81F)转换为 URL(甚至是 NSStrings)。如果有其他方法可以通过其他字符串转换方式实现这一点,我将不胜感激。

4

1 回答 1

1

当 NSString 已经是 UTF-8 编码时,我不知道您为什么要尝试对 Unicode 字符进行转义:

编辑:我明白了!它肯定根本不是 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);
于 2012-07-01T15:55:28.967 回答