javaScript 字符串与unicode码之间的相互转换,函数的封装
在我们的开发过程中,有时在对数据进行储存的时候,我们需要将字符串转成unicode。
比如,在jsp开发时,前端使用页面间传值时,将传值参数先存入cookie中,然后在使用的时候,再从ookie中取出。当存入cookie的参数为汉字或别的什么特殊字符时,就会导致服务器崩溃。
崩溃的大致原因:每次客户端与服务器之间的通信都会携带cookie,所以存入cookie的特殊字符就会被携带到服务器中。而在jsp开发的项目中,服务器在遇到cookie中这些特殊字符时,无法正确的解析,导致服务器崩溃。具体导致原因,后端会更加清楚,我也只是了解个大概,有兴趣的可以深入了解。
这时,我们在cookie存入的要是unicode码的话,就不会导致服务器崩溃的问题。当然也有别的处理方法,比如存入storage,让后端帮忙处理等。这里只说转码的解决方法。
方法中大致用到javascript中的两个自带的API。
fromCharCode():fromCharCode() 可接受一个指定的 Unicode 值,然后返回一个字符。用法string.fromCharCode(unicode,16));
charCodeAt():charCodeAt() 方法可返回指定位置的字符的 Unicode 编码。这个返回值是 0 - 65535 之间的整数。
看,javascript已经帮我们做完了很多事情。这两个API一次只能帮我们处理一个字符啊。还有就是这两个方法处理完和处理后都是 0 - 65535 之间的整数。而我们在使用的时候一般习惯性的在整数码之前加入\u,这个要手动的加入和删除。
代码如下:
//将unicode编码转字符串
var Unicode_Str=function(unicode){
var result=[];
var strArr=unicode.split('\\u');
for(var i=0,len=strArr.length;i<len;i++){
if(strArr[i]){
result.push(string.fromCharCode(parseInt(strArr[i],16)))
}
}
return result.join('');
}
//将字符串转unicode编码
var Str_Unicode=function(str){
var unid='\\u';
for(let i=0,len=str.length;i<len;i++){
if(i<len-1){
unid+=str.charCodeAt(i).toString(16)+'\\u';
}else if(i===len-1){
unid+=str.charCodeAt(i).toString(16);
}
}
return unid;
}
javaScript 字符串与unicode码之间的相互转换,函数的封装的更多相关文章
- 字符串与Unicode码的相互转换
//1,字符串转换为unicode码 var s = '吴'; //2,unicode码转字符串 '\u5434'.toString(16) //吴 或者 String.fromCharCode(21 ...
- JavaScript字符串插入、删除、替换函数
JavaScript字符串插入.删除.替换函数 说明: 以下函数中前两个函数取出查找字符串的前一部分和后一部分,以用于其他函数.注意,调用一次 replaceString(mainStr,search ...
- python字符串/列表/元组/字典之间的相互转换(5)
一.字符串str与列表list 1.字符串转列表 字符串转为列表list,可以使用str.split()方法,split方法是在字符串中对指定字符进行切片,并返回一个列表,示例代码如下: # !usr ...
- Java中字符串和byte数组之间的相互转换
1.将字符转换成byte数组 String str = "罗长"; byte[] sb = str.getBytes(); 2.将byte数组转换成字符 byte[] b={(by ...
- 字符串转Unicode码
var str = '中'; var charCode = str.charCodeAt(0); console.log(charCode); // => 20013; str.charCode ...
- [PHP] chr和ord函数实现字符串和ASCII码互转
chr和ord函数是用来字符串和ASCII码互转的. ASCII码是计算机所能显示字符的编码,它的取值范围是0-255,其中包括标点.字母.数字.汉字等.在编程过程中,经常把指定的字符转化为ASCI ...
- 用php的chr和ord函数实现字符串和ASCII码互转
http://shenyongqang.blog.163.com/blog/static/22439113201002941856838/ chr和ord函数是用来字符串和ASCII码互转的. ASC ...
- [Swift]JSON字符串与字典(Dictionary)、数组(Array)之间的相互转换
1.JSON字符串与字典(Dictionary)之间的相互转换 import Foundation //JSON字符串转换为字典(Dictionary) func getDictionaryFromJ ...
- 根据Unicode码生成汉字
最近需要一批汉字字符数据,类似数字字符与ASCII码之间的对应关系,汉字字符与Unicode码之间也存在对应关系. 所以可以遍历Unicode码批量生成汉字. 其中,汉字为宽字符,输出时候注意需要修改 ...
随机推荐
- contentType和dataType
contentType: 告诉服务器,我要发什么类型的数据 dataType:告诉服务器,我要想什么类型的数据,如果没有指定,那么会自动推断是返回 XML,还是JSON,还是script,还是Stri ...
- js中实现多态
最近读到一本书<JavaScript设计模式与开发实践>上,讲到js的多态,我在JavaScript高级程序编程里貌似都没有见过关于这个的详细讲解,所以想问问大家有没有什么推荐的文章或者博 ...
- Android之自定义(上方标题随ViewPager手势慢慢滑动)
最近很蛋疼,项目要模仿网易新闻的样式去做.上次把仿网易新闻客户端的下拉刷新写出来了,这次是ViewPager的滑动,同时ViewPager的上面标题下划线跟随者移动,本来通过ViewPager的OnP ...
- 2.安装 Android SDK
安装Android SDK Android SDK(Software Development Kit,软件开发工具包)提供了 Android API 库和开发工具构建,测试和调试应用程序.简单来讲,A ...
- Python——追加学习笔记(二)
文件处理 # 文件内移动 seek()方法可以在文件中移动文件指针到不同的位置,offset字节代表相对于某个位置偏移量,默认为0,代表从文件开头算起,1代表从当前位置算起,2代表从文件末尾算起. s ...
- Asio基本接口
Asio是C++的网络库,有boost和非boost这两种版本,这里涉及的都是非boost的版本.Asio官方文档 在使用Asio时可以只包含头文件asio.hpp,如果知道所用接口具体在哪个头文件中 ...
- RAC常用日志总结
12C RAC:ocssd启动失败log目录:/u01/app/grid/diag/crs/host02/crs/trace/alert.log
- Locust性能测试3 no-web运行
Locust也支持no-web的方式运行,直接通过控制台设置并发用户数.每秒启动用户数.持续压测时间. locust -f 脚本路径 -c 用户数 -r 每秒启动用户数 --run-time 持续压测 ...
- 网络体系结构的概念 - 网络协议TCP - 红黑联盟
https://i.cnblogs.com/EditPosts.aspx?opt=1 网络体系结构的概念 计算机网络就是一组通过一定形式连接起来的计算机系统,它需要四个要素的支持,即通信线路和通信设 ...
- Ajax综合应用大全(全面解析)
AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术. AJAX = 异步 JavaScrip ...