我只是想知道UTF-8代码符号的前缀。在某些情况下,它使用反斜杠符号(\)表示为\uc774\ud2b8
。但是,我也可以使用百分号(%)查找代码。例如%uc774%ud2b8
。
无论我使用什么,现代浏览器都没有问题,但是当我使用百分比表示法时,NSURL
无法识别返回包含空URL的对象的代码。
什么是UTF-8代码的正确表示法,当我使用带有百分比前缀的url字符串的NSURL
时,如何解决问题?
编辑:单词UTF-8
我错了。引用Unicode character set
而不是UTF-8 encoding
是正确的。
答案 0 :(得分:1)
这与UTF-8无关。各种语言(C,Java)使用\u
表示法将Unicode字符编码为字符串。当遇到字符串"\uc774\ud2b8"
时,它通常以UTF-8编码,这意味着它是字节序列0xEC 0x9D 0xB4 0xED 0x8A 0xB8。但它可以通过其他方式编码,例如0xC774 0xD2B8(UTF-16)。这取决于您的系统。但重点是这个字符串是2个unicode字符。
%
编码完全不同。它是由RFC 3986定义的URI保留字符的百分比编码标准。当编译器遇到"%uc774%ud2b8"
时,它会将其编码为"%" " U" " 7" " 7" " 4"等(通常它会以UTF-8编码这些中的每一个,但它取决于系统)。大多数语言都不会将%
视为特殊语言。 \u
(和\
一般)是该语言的一部分。 %
不是。所以这个字符串是12个unicode字符长。该语言不关心%
。 URL解析器可以。
为了让iOS将字符串转换为NSURL
,必须正确编码字符串。这可能包括URL的某些部分中的百分比编码,并且可能禁止URL的其他部分中的百分比编码(以及哪些字符可能或必须是百分比编码在URL的不同部分中可以是不同的)。这些规则在RFC 3986中有详细说明。
答案 1 :(得分:0)
您可以通过
执行此操作老方法
NSString * newString = [myString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; //Deprecated now
myString是urlstring,有百分之,newString是你想要的字符串。
新方法:
NSString * newString = [myString stringByRemovingPercentEncoding];
希望这会有所帮助:)