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/
    本文版权归作者和博客园所有,欢迎转载,转载请标明出处。
    如果博文对您有所收获,请点击下方的 [推荐],谢谢

  • 相关阅读:
    threadlocal 变量 跟synchronized 关键字的关系
    Android媒体扫描详细解析之一(MediaScanner & MediaProvider)
    创建视图全文搜索[完整版]
    海量小文件问题综述
    内存拷贝探究
    case功能菜单选项
    linux case ${variable} in
    attack source code
    ftps加密服务器
    vim编程设置
  • 原文地址:https://www.cnblogs.com/Zev_Fung/p/5364862.html
Copyright © 2011-2022 走看看