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

  • 相关阅读:
    瑞士军刀DLib的VS2015编译
    win10编译libpng
    win10编译zlib
    win10编译jpeglib
    Hough Transform直线检测
    html+css简单的实现360搜索引擎首页面
    HTML和css简单日常总结
    MySQL中的分区(六)KEY分区
    CentOS 8 安装vsftpd 服务器
    linux负载过高 排查方法及说明 附:Centos安装iostat
  • 原文地址:https://www.cnblogs.com/Zev_Fung/p/5364862.html
Copyright © 2011-2022 走看看