Objective c Unicode的转换>&燃气轮机;U+;9FFF以形成URL
试图将包含U+20000到U+2B81F范围内转义unicode(例如:\u3400)的字符串转换为URL格式,但不起作用。U+3400到U+9FFF的范围工作正常Objective c Unicode的转换>&燃气轮机;U+;9FFF以形成URL,objective-c,Objective C,试图将包含U+20000到U+2B81F范围内转义unicode(例如:\u3400)的字符串转换为URL格式,但不起作用。U+3400到U+9FFF的范围工作正常 NSString *string1 = @"\u9FFF"; string1 = [string1 stringByReplacingPercentEscapesUsingEncoding:NSUnicodeStringEncoding]; NSURL *url1 = [NSURL URLWithString:[NSString s
NSString *string1 = @"\u9FFF";
string1 = [string1 stringByReplacingPercentEscapesUsingEncoding:NSUnicodeStringEncoding];
NSURL *url1 = [NSURL URLWithString:[NSString stringWithFormat:@"http://en.wikipedia.org/Search?search=%@", string1]];
NSLog(@"url1: %@", url1);
输出:url1:
输出:url2:(空)
基本上,我想要的是将转义的Unicode(\u3400到\u2B81F)列表转换为URL(甚至NSString)。如果有其他方法可以通过其他字符串转换手段实现这一点,我将非常感激。我不知道为什么在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);
你说得对,科达菲,逃跑真的没用。我运行了你的行,但是我仍然得到了一个零字符串作为
\u20000
(\u9FFF
)可能是因为\u2000是一个空格。根据这一点,\u20000是一个汉字。在U+20000到U+2B81F的整个范围内都是相同的行为,对应于CJK统一表意文字扩展B、C、D和CJK兼容表意文字补充(2F800–2FA1F)。找到了!那个字符肯定很难找到。它在C中使用\uD840\uDC00
进行转义,而不是\u20000
;科多菲,谢谢。整个过程的目的是将\u20000(或00020000,我认为它是UTF-32;from)转换为F0 A0 80 80(UTF-8)。如果我能做到这一点,我应该能够为\uD840\uDC00或F0 A0 80构建URL。你知道如何做到这一点吗?我现在对这个很困惑。。。
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);