NSUrl fileURLWithPath返回奇怪的中文符号

时间:2014-05-02 10:00:21

标签: ios objective-c nsurl

我有一个指向我的Documents文件夹的NSString路径。

NSString* stringURL = @"/var/mobile/Applications/5667FADC-F848-40CF-A309-
7BFE598AE6AB/Library/Application Support/MyAppDirectory";

当我使用

将其投放到NSUrl
 NSURL* url = [NSURL fileURLWithPath:stringUrl];

NSLog(@"Created URL: %@",url);,我得到了一些奇怪的结果:

  

/// VAR /移动/应用/ 5667FADC-F848-40CF-A309-7BFE598AE6AB /库/应用程序㤈㤋ތȀ乽启汲唠䱒>楦敬⼺⼯庆⽲潭楢敬䄯灰楬惯楴汤⽳㘵㜶䅆䍄䘭㐸ⴸ〴䙃䄭〳ⴹ䈷䕆㤵䄸㙅䉁䰯扩慲祲䄯灰楬惯楴汤㈥匰灵溃玱䴯䅹灰楄敲琐牯⽹upport / MyAppDirectory /

为什么会这样? 我做错了什么?

3 个答案:

答案 0 :(得分:0)

当我记录该值时,我没有看到任何中文字符。

NSString* stringURL = @"/var/mobile/Applications/5667FADC-F848-40CF-A309-7BFE598AE6AB/Library/Application Support/MyAppDirectory";
NSURL* url = [NSURL fileURLWithPath:stringURL];
NSLog(@"%@",url);

答案 1 :(得分:0)

经典错误。不要使用NSLog(url),使用NSLog(@"%@",url)。 NSLog的第一个参数是格式字符串,格式字符串中的%字符被解释,而不是打印。例如,格式字符串中的%s表示参数列表中需要另一个C-String。由于url可能包含各种字符,因此可能会导致垃圾结果甚至崩溃。

答案 2 :(得分:0)

根据您从previous question接受的答案;这是因为使用stringByAddingPercentEscapesUsingEncoding会生成一个包含%20S printf 类格式字符串(Application Support之间的空格转换为%20),这会让NSLog()

混淆
NSURL *url = [NSURL fileURLWithString:[stringURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding] isDirectory:YES];
NSLog(url);

使用NSLog("@%", url)来避免此错误。