objective-c 与 js之间传递中文乱码
最近在做关于js改写oc framework的小project,遇到了不少问题
其中刚遇到的是关于如何在两者之间传递中文字符,带特殊字符的URL字符串
不会很详细的介绍太多,以后会回头做个总结
oc传递中文到js,刚开始我认为是需要将字符编码成UTF-8的,但是没有解决问题
后来才发现,原来传递字符串过去到js,只是原值拷贝而已,并不会出现乱码问题,而问题在于js往oc传递中文时,必须编码
一开始我用的编码方式是encodeURIComponent,但是发现,传递到OC那边,解码出来的依然是一堆不认识的字符串
后来细看js,里面有这么个编码方式encodeURI,非常开心的成功了
js :
var title = encodeURI('标题');
oc :
[value stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]
对于url方面,因为url里面可能存在特殊字符:! @ # $& * ( ) = : / ; ? + ',传递不过去js那边,所以OC那边需要对URL进行编码
+ (NSString *)urlencode:(NSString *)uncodeString {
NSMutableString *output = [NSMutableString string];
const unsigned char *source = (const unsigned char *)[uncodeString UTF8String];
int sourceLen = strlen((const char *)source);
; i < sourceLen; ++i) {
const unsigned char thisChar = source[i];
if (thisChar == ' '){
[output appendString:@"+"];
} else if (thisChar == '.' || thisChar == '-' || thisChar == '_' || thisChar == '~' ||
(thisChar >= 'a' && thisChar <= 'z') ||
(thisChar >= 'A' && thisChar <= 'Z') ||
(thisChar >= ')) {
[output appendFormat:@"%c", thisChar];
} else {
[output appendFormat:@"%%%02X", thisChar];
}
}
return output;
}
如果说,js那边需要将url转换过来使用,那么就简单调用decodeURIComponent方法就可以取得原来的url值了
待后续丰富,其实这里有很多东西可以学习的!
objective-c 与 js之间传递中文乱码的更多相关文章
- jquery.ajax的url中传递中文乱码问题的解决方法
jquery.ajax的url中传递中文乱码问题的解决方法 JQuery JQuery默认的contentType:application/x-www-form-urlencoded 这才是JQu ...
- js url传值中文乱码完美解决(JAVA)
js url传值中文乱码完美解决(JAVA) 首先在你的jsp页面这样更改: var url="你要传入的Action的位置&ipid="+ipid+"& ...
- 处理URL传递中文乱码问题
在网上搜了很多资料都没有搞定,一般都有以下几种说法: 方法1:在后台中先获得字符串的iso-8859-1编码形式数组,再使用此数组实例一个UTF-8编码形式String类型字符串. 页面提交的url为 ...
- JS传参中文乱码
在传参的时候给中文参数加上两个encodeURI即可,类似这样: encodeURI(encodeURI(balanceUnit)) 写法二 escape(encodeURI(tmplItem.hyz ...
- js 学习之路4:js运行/输出中文乱码问题解决
网上找了一个简单的例子,编写出来很简单,但是乱码的问题稍微困扰了一下. 题目: 1. 大马驮2石粮食,中马驮1石粮食,两头小马驮一石粮食,要用100匹马,驮100石粮食,该如何调配? js解决代码: ...
- JS传参中文乱码问题.NET
前台js代码 window.location.href = "/product.aspx?id=2&title=" +encodeURIComponent(strtitle ...
- cocos2d js jsb XMLHttpRequest 中文乱码
1.首先讲下怎样使用XMLHttpRequest 下面所说的是在cocos2d-x 2.2.2 或者 2.3 版本号中. 首先要明确cocos2d js事实上分两个版本号,一个是html5的版本号,另 ...
- 又一个js乱码的秘密alert放在js文件里中文乱码,可是放在HTML里显示中文就很好
用文本文档打开你的js文件,文件-另存为,编码更改为UTF-8保存. 回复 | PFly | 园豆:94 (初学一级) | 2017-07-17 21:32 显示结果中文乱码 支持(0)反对(0)回复 ...
- spring mvc中关于url中传递中文乱码的解决方法
在传值过程中,也是乱码出现的频繁地.先不说到底是什么场景了,通常常用的方案有如下几个 配置指定的filter <!-- 配置请求过滤器,编码格式设为UTF-8,避免中文乱码--> < ...
随机推荐
- C#简单windows服务
因为做后台比较多,所以经常需要写一些后台服务.一般的流程是先创建一个服务项目,加入代码.然后打包一个安装程序或者直接用dos命令安装服务.下面是详细内容: 1. 创建windows服务项目. ...
- IIS Express 一个网站配置多个 域名
在配置localhost和IP都可以访问: 方法1: applicationhost.config文件配置: <bindings> <binding protocol=& ...
- 如何让360、遨游、猎豹等双核浏览器默认以webkit内核渲染网页?
众知目前国内不少浏览器都自称双核,一般是 IE(Trident)+Webkit.因为 webkit 急速的体验和对 HTML5 的支持,有些情况下开发者可能希望用户优先甚至只使用 webkit 内核渲 ...
- ibatis中iterate的用法(conjunction="or" ",")
例子一 查询条件dto public class queryCondition{ private String[] stuIds; private String name;} 查询sqlMap < ...
- JavaScript 性能分析新工具 OneProfile
OneProfile 是一个网页版的小工具,可以用全新的方式展示 JavaScript 性能分析的结果,帮助开发者洞悉函数调用关系,优化应用性能. 点击打开 OneProfile 背景 Chrome ...
- ArrayList和Iterator的用法
import java.util.ArrayList; import java.util.Iterator; public class ArrayListTest { public static vo ...
- 2014多校第七场1003 || HDU 4937 Lucky Number
题目链接 题意 : 给定一个十进制n,让你转化成某个进制的数,让这个数只包含3 4 5 6这些数字,这个进制就成为n的幸运数字,输出有多少幸运数字,例如19,5进制表示是34,所以5是19的一个幸运数 ...
- 消除ComponentOne(C1StudioNet_2013v2) 的注册提示
以后大家如果遇到还有提示,在License文件里添加:C1.Win.C1Command.C1OutBar, C1.Win.C1Command.4, Version=4.0.20132.19568, ...
- Spark基础与Java Api介绍
原创文章,转载请注明: 转载自http://www.cnblogs.com/tovin/p/3832405.html 一.Spark简介 1.什么是Spark 发源于AMPLab实验室的分布式内存计 ...
- oci.dll文件是用来干嘛的? 如果没有安装ORACLE客户端提示oci.dll未加载
oracle数据库开发编程中,没有找到oci.dll,一般是系统的 path 设置有问题, 查找oci.dll, 然后加入到系统路径.oci.dll 可下载解压到系统盘的system32目录下.然后打 ...