IOS将URL字符串转换为NSString?

时间:2013-05-31 03:24:43

标签: ios string url nsstring

我将转换URL string时遇到问题,我将其从XML文件中提取到NSString

URL string看起来像这样,看起来很奇怪,但它是URL格式。

%3CTEXTFORMAT%20LEADING%3D%222%22%3E%3CP%20ALIGN%3D%22LEFT%22%3E%3CFONT%20FACE%3D%22Arial%22%20SIZE%3D%2212%22%20COLOR%3D%22%23000000%22%20LETTERSPACING%3D%220%22%20KERNING%3D%220%22%3E%u53F0%u5317%u7E2323141%u65B0%u5E97%u6C11%u6B0A%u8DEF130%u5DF714%u865F5%u6A13%3C/FONT%3E%3C/P%3E%3C/TEXTFORMAT%3E

但是,当我使用stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding方法时,它会返回nil。

经过一些实验和研究后,似乎URL包含%u导致问题转换URL而此%u看起来像unicode,但是,我试过删除所有%u然后stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding方法返回一个正确的字符串没有任何问题。

有谁知道如何正确地将此URLstring转换为NSString

1 个答案:

答案 0 :(得分:2)

你的urlString中是Unicode汉字,这就是它没有转换的原因。

将%u替换为\ u,您将获得String。

NSString *str=@"%3CTEXTFORMAT%20LEADING%3D%222%22%3E%3CP%20ALIGN%3D%22LEFT%22%3E%3CFONT%20FACE %3D%22Arial%22%20SIZE%3D%2212%22%20COLOR%3D%22%23000000%22%20LETTERSPACING%3D%220%22%20KERNING%3D%220%22%3E%u53F0%u5317%u7E2323141%u65B0%u5E97%u6C11%u6B0A%u8DEF130%u5DF714%u865F5%u6A13%3C/FONT%3E%3C/P%3E%3C/TEXTFORMAT%3E";
str=[str stringByReplacingOccurrencesOfString:@"%u" withString:@"\\u"];
NSString *convertedStr=[str stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSLog(@"converted string is %@ \n",convertedStr);

输出:---------------

converted string is <TEXTFORMAT LEADING="2"><P ALIGN="LEFT"><FONT FACE="Arial" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">\u53F0\u5317\u7E2323141\u65B0\u5E97\u6C11\u6B0A\u8DEF130\u5DF714\u865F5\u6A13</FONT></P></TEXTFORMAT>

了解更多信息请点击此url
这是中文unicode char 这里有一些代码可以证明:

NSString *newStr=@"\u53F0\u5317\u7E2323141\u65B0\u5E97\u6C11\u6B0A\u8DEF130\u5DF714\u865F5\u6A13";
NSLog(@"chinese string is %@",[newStr stringByReplacingPercentEscapesUsingEncoding:NSUTF16StringEncoding]);

输出:----------------------     的台北县23141新店民权路130巷14号5楼

转到谷歌翻译这个字符串将给你一个人的地址。 as: -

市民新店,台北县23141路130弄5号巷11号