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码批量生成汉字. 其中,汉字为宽字符,输出时候注意需要修改 ...
随机推荐
- SENNA
SENNA is a software distributed under a non-commercial license, which outputs a host of Natural Lang ...
- win7下tomcat5.5无法通过ip和127.0.0.1访问的解决方法
解决办法:找到tomcat5.5目录下的conf\server.xml文件,原文如下: <Connector port="8080" maxHttpHeaderSize=&q ...
- mysqldump备份脚本一例
参考三思老师书中所写,感觉挺好用,记录下来,虽然是抄袭,但是手抄还是很累的,其中用到的其他脚本,在博客中已经记录: mysql_full_backup.sh#!/bin/sh#Created by C ...
- bzoj3820 虫逢
Description 小强和阿米巴是好朋友. 阿米巴告诉小强,变形虫(又叫阿米巴虫)和绝大多数生物一样,也是有 DNA 的.并且,变形虫可以通过分裂的方式进行无性繁殖. 我们把一个变形虫的基因组抽象 ...
- 2.Swift教程翻译系列——Swift概览
英文版PDF下载地址http://download.csdn.net/detail/tsingheng/7480427 依照传统学习程序语言都是从hello,world開始,在Swfit里面仅仅须要一 ...
- 布局方式-flex布局
.弹性盒子 .盒子本来就是并列的 .指定宽度即可 <style> .container { width: 800px; height: 200px; display: flex; bord ...
- 如何写一个FMDB帮助类?看看runtime吧
FMDB是一个封装很好的sqllite类库.项目中调用的时候只需要写SQL语句,就能实现数据的CURD.我试过即使手写SQL语句也很麻烦,需要一个字段一个字段的拼上去,而且容易出错.有没有动态获取字段 ...
- Batch Normalization:Accelerating Deep Network Training by Reducing Internal Covariate Shift(BN)
internal covariate shift(ics):训练深度神经网络是复杂的,因为在训练过程中,每层的输入分布会随着之前层的参数变化而发生变化.所以训练需要更小的学习速度和careful参数初 ...
- maven项目发布到Tomcat丢失jar包
昨天看了一篇tomcat设置的文章,说要把第一个勾上,这样不需要更新到tomcat. 一启动tomcat就发现丢包.后来在网上看了许多文章,说要update maeven项目,然后你就会发现启动过程 ...
- 【luogu P3384 树链剖分】 模板
题目链接:https://www.luogu.org/problemnew/show/P3384 诶又给自己留了个坑..不想写线段树一大理由之前的模板变量名太长 #include <cstdio ...