事情是这样的:我要在一个URL中截取一个名为‘vfname’的参数,因为这个参数的值带有中文(转码之前的形式),所以我必须将其转码。

URL是这样的:

http://devapi.amibaguanli.com/ApplicationInterface/Product/LightApp/reportfile.html?vfid=57bbeab20374000d4400026f&vfname=%25u65E5%25u7A0B.docx&vfext=docx

其中的vfname=%25u65E5%25u7A0B.docx就是我要的值。

这种转码问题常规的做法是这样的:(这句代码是写在webview的“-(BOOL) webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;”方法中的)

NSString* urlStr = [request.URL.absoluteString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

可是,将request.URL.absoluteString转换后的结果却并非我预期的,转换后:

http://devapi.amibaguanli.com/ApplicationInterface/Product/LightApp/reportfile.html?vfid=57bbeab20374000d4400026f&vfname=%u65E5%u7A0B.docx&vfext=docx

我们可以看到vfname=%u65E5%u7A0B.docx,这依然不是我们需要的格式。之后我在网上也找了很多关于unicode和utf-8的编码转换方法,但都大同小异,而且没有效果。最后,在一位大神的指导下,用UIWebView自带的一个方法才得以实现;

NSString* urlStr = [webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"unescape(decodeURIComponent(\"%@\"))",request.URL.absoluteString]];

其中的unescape(decodeURIComponent(\"%@\"))很奇怪,大神也不知道它的原理是什么,但是确实是一段神奇的代码,问题终于解决了!

ios中文转码的一个奇葩问题的更多相关文章

  1. 设计比较好,有助于学习的Github上的iOS App源码 (中文)

    Github版 中文 : TeamTalk 蘑菇街. 开源IM. 电商强烈推荐. MyOne-iOS 用OC写的<一个> iOS 客户端 zhihuDaily 高仿知乎日报 Coding ...

  2. Github上的iOS App源码 (中文)

    Github版英文App地址 中文 : TeamTalk 蘑菇街. 开源IM. 电商强烈推荐. MyOne-iOS 用OC写的<一个> iOS 客户端 zhihuDaily 高仿知乎日报 ...

  3. 二维码合成,将苹果和安卓(ios和android)合成一个二维码,让用户扫描一个二维码就可以分别下载苹果和安卓的应用

    因为公司推广的原因,没有合适的将苹果和安卓(ios和android)合成一个二维码的工具. 因为这个不难,主要是根据浏览器的UA进行判断,所以就自己开发了一个网站 网站名称叫:好推二维码  https ...

  4. iOS开发之网络编程--中文转码

    前言: 在GET请求或者是POST请求,请求上传的参数如果含有中文,可能会导致请求失败. 所以要对存储了URL地址的NSString对象进行中文转码,然后将这个NSString对象传递给URL.   ...

  5. IOS网络请求中文转码

    -(void)get { NSString *urlStr = @"http://120.25.226.186:32812/login2?username=小码哥&pwd=520it ...

  6. iOS - OC - 网络请求 - 中文转码

    #import "ViewController.h" @interface ViewController () @end @implementation ViewControlle ...

  7. Ios二维码扫描(系统自带的二维码扫描)

    Ios二维码扫描 这里给大家介绍的时如何使用系统自带的二维码扫描方法和一些简单的动画! 操作步骤: 1).首先你需要搭建UI界面如图:下图我用了俩个imageview和一个label 2).你需要在你 ...

  8. ios源码-ios游戏源码-ios源码下载

    游戏源码   一款休闲类的音乐小游戏源码 该源码实现了一款休闲类的音乐小游戏源码,该游戏的源码很简单,而且游戏的玩法也很容易学会,只要我们点击视图中的grid,就可以 人气:2943运行环境:/Xco ...

  9. iOS:二维码的生成

    所谓的二维码就是一个图片,只不过在iOS需要借用<CoreImage/CoreImage.h>来实现,  并且二维码图片是通过CIImage来转成UIImage的.具体步骤如下: // 1 ...

随机推荐

  1. iOS静态库及Framework 创建

    本文转自cocoachina,尊重作者的汗水. 讲述的非常透彻,有需要的朋友可以阅读实践.转载请注明出处 //=================以下留着备份==================// 在 ...

  2. PHPStorm技巧篇 -- 全局搜索

    自定义快捷键,找到search everywhere 我绑定的是alt+N 设置好并apply后,在项目中使用:快捷键alt+N ,输入自己需要查找的文件或类名或方法名,即可出现相应的选项. so c ...

  3. typeof,GetType

    typeof: 是运算符,获得某一类型的 System.Type 对象. Int32 t = new Int32(); Type t = typeof(int); GetType: 是方法,获取当前实 ...

  4. NPOI的使用Excel模板导出

    private string ExportScMeeting(DataTable source) { string templateFile = Server.MapPath(@"Excel ...

  5. 2017年1月1日 java学习第二天复习

    今天是新年的第一天,以前学习没有总结习惯,学习效率和成果都很不好.  学习的过程就是反复的复习和不断学习的过程,开始今天的学习总结   学习java的第二天. 今天学习了java最基础的一些内容,照着 ...

  6. Hibernate连数据库

    1.建数据库,建表(一定要设主码) create database Hibernate create table Students( sno char(10) primary key, sna cha ...

  7. PE文件学习系列二 DOS头分析

    合肥程序员群:49313181.    合肥实名程序员群 :128131462 (不愿透露姓名和信息者勿加入)Q  Q:408365330     E-Mail:egojit@qq.com PE文件结 ...

  8. Sphinx Search 学习 (一)

    参考资料一:(中文)http://www.coreseek.cn/docs/coreseek_3.2-sphinx_0.9.9.html (官方)http://sphinxsearch.com/doc ...

  9. mysql数据库的导入导出

    当我们在操作数据库的时候,难免会遇到数据导入导出的一些操作,今天突然学到了这个知识点,特意来给大家分享. 我用的是data的这条数据 1.使用数据 mysql> use data; Databa ...

  10. 微信 URL Scheme详细参数

    weixin:// "weixin://dl/stickers""weixin://dl/games""weixin://dl/moments&quo ...