zoukankan      html  css  js  c++  java
  • 带中文的路径导致NSURL初始化一直为null的问题

    一、问题描述

    在学习Ojective-C过程中,需要读取文件中的内容,但发现指针变量url的值一直为nil。

    代码如下:

     NSString *strUrl=@"file:///Users/fengziwu/Desktop/笔记.txt";
     NSURL *url = [[NSURL alloc] initWithString:strUrl];

    二、问题分析

    后来发现原因:编码问题,带中文字符的文件路径导致,需要对路径进行编码处理

    三、问题解决

    NSString类中有这两个方法:

    - (nullable NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)enc NS_DEPRECATED(10_0, 10_11, 2_0, 9_0, "Use -stringByAddingPercentEncodingWithAllowedCharacters: instead, which always uses the recommended UTF-8 encoding, and which encodes for a specific URL component or subcomponent since each URL component or subcomponent has different rules for what characters are valid.");
    - (nullable NSString *)stringByReplacingPercentEscapesUsingEncoding:(NSStringEncoding)enc NS_DEPRECATED(10_0, 10_11, 2_0, 9_0, "Use -stringByRemovingPercentEncoding instead, which always uses the recommended UTF-8 encoding.");

    前一个方法字符串进行编码,后一个方法对字符串进行解码。

    解决办法如下:

     NSString *strUrl=@"file:///Users/fengziwu/Desktop/笔记.txt";
     NSURL *url = [[NSURL alloc] initWithString:[strUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

    学习,以记之。如有错漏,欢迎指正

    作者:冯子武
    出处:http://www.cnblogs.com/Zev_Fung/
    本文版权归作者和博客园所有,欢迎转载,转载请标明出处。
    如果博文对您有所收获,请点击下方的 [推荐],谢谢

  • 相关阅读:
    第二阶段团队冲刺07
    第二阶段团队冲刺06
    第二阶段团队冲刺05
    深入浅出设计模式系列 -- UML类图
    Linux、Mac统计文件夹下的文件数目
    控制反转及依赖注入(IoC/DI)概念
    深入理解MySQL优化原理
    git config的全局和本地配置
    Vim命令速查表
    聊聊kafka的工作原理
  • 原文地址:https://www.cnblogs.com/Zev_Fung/p/5364862.html
Copyright © 2011-2022 走看看