`

Js字符集编码转换函数及js中get方式传值特殊字符的处理

    博客分类:
  • js
阅读更多
Js字符集编码转换函数
字符集转换:
1.ajax get请求的字符集乱码解决方案,发送端数据用reCode()方法编码加密,接收端用deCode()方法解码。
   function reCode(str) { return encodeURIComponent(encodeURIComponent(str)); }
   function deCode(str) { return decodeURIComponent(decodeURIComponent(str)); }

2.js-get请求特殊字符不可见问题(如‘+’号等):
   location.href="url"+encodeURIComponent(str);

3.字符集转换函数:

   对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent
 
   escape对0-255以外的unicode值进行编码时输出%u****格式,其它情况下escape,encodeURI,encodeURIComponent编码结果相同。
   encodeURI() 方法:把URI字符串采用UTF-8编码格式转化成escape格式的字符串
   encodeURIComponent,最多使用,它是将中文、韩文等特殊字符转换成utf-8格式的url编码,所以如果给后台传递参数需要使用encodeURIComponent时需要后台解码对utf-8支持(form中的编码方式和当前页面编码方式相同)
 
   escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z

   encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z

   encodeURIComponent不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z
/******************************
今天为这个东西搞了半天,记载下,上面的仅做参考吧,
以下是js中get方式传值特殊字符的处理:
*************************jsp之间:*********************************
/*
*js Unicode编码转换
*/
var decToHex = function(str) {
    var res=[];
    for(var i=0;i < str.length;i++)
        res[i]=("00"+str.charCodeAt(i).toString(16)).slice(-4);
    return "\\u"+res.join("\\u");
}

var decToHex2 = function(str) {
    var res="",c;
    for(var i=0;i < str.length;i++){
        c=str.charCodeAt(i);
        res+=(c< 32 || c==38 || c>127)?"\\u"+c.toString(16):str.charAt(i)
    }
    return res;
}

var hexToDec = function(str) {
    str=str.replace(/\\/g,"+");
    return unescape(str);
}

//var str=decToHex("decToHex unicode 编码转换");
//alert("编码后:"+str+"\n\n解码后:"+hexToDec(str));
************jsp与java:**************************************

var src = "dispatcher.jsp?requestUrl=storage/temporaryConv_confirmConversion.action&tmaterielId="+tmaterielId+"&materielId="+materielId+"&tmaterielName="+decToHex(tmaterielName)+"&materielName="+decToHex(materielName);

java中:
Unicode2GBK(tmaterielName);
/**
* 用于AJAX传来的中文参数unicode解码
* @param dataStr
* @return
*/
public static String Unicode2GBK(String dataStr) {
if (dataStr == null || "".equals(dataStr)) {
return dataStr;
}
int index = 0;

StringBuffer buffer = new StringBuffer();

while (index < dataStr.length()) {
try {
if (!"\\u".equals(dataStr.substring(index, index + 2))) {
buffer.append(dataStr.charAt(index));
index++;
continue;
}
} catch (Exception e) {

for (int j = index; j < dataStr.length(); j++) {
buffer.append(dataStr.charAt(index));
}
return buffer.toString();
}
String charStr = "";
charStr = dataStr.substring(index + 2, index + 6);
char letter = (char) Integer.parseInt(charStr, 16);
buffer.append(letter);
index += 6;
}

return buffer.toString();

}

分享到:
评论

相关推荐

    PHP函数库,PHP函数大全,PHP函数实例,PHP函数手册,PHP5函数库实例

    字符集转换类 对要输入的字符串进行转换 对要输出的字符串进行反转换 对输入JS进行转换 寻找两个函数所有不同的元素 寻找两数组所有不同元素 得到文件类型 截取字符串中两个特定唯一字符之间的内容 截取...

    JavaScript中URL编码函数代码

    所有的空格符、标点符号、特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。比如,空格符对应的编码是 。 不会被此方法编码的字符: @ * /

    API之网络函数---整理网络函数及功能

    API之网络函数1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一个网络资源的连接 WNetAddConnection3 创建同一个网络资源的连接 WNetCancelConnection 结束一...

    Excel公式与函数大辞典.宋翔(带书签高清文字版).pdf

    最后3 章还将公式与函数的应用扩展到了条件格式、数据验证及图表中,以便使它们发挥更强大的功能。本书采用理论与实践相结合的方式,提供了457 个案例,涉及多个行业,读者可以根据书中的案例举一反三,将其直接应用...

    EXCEL函数功能整理版

    7 文件名函数 CELL("filename")、宏表函数get.cell(32)或get.cell(66) 8 年龄计算 DATEDIF() 函数 9 突破SUM函数参数的限制 10 ABS 这个函数是用来计算一个数的绝对值,与正负数符号没有关系。 ...

    Windows API函数大全

    SetTextJustification 通过指定一个文本行应占据的额外空间,可用这个函数对文本进行两端对齐处理 TabbedTextOut 支持制表站的一个文本描绘函数 TextOut 文本绘图函数 6. API之菜单函数 AppendMenu 在指定的菜单...

    Absolute C++中文版(原书第2版)-完美的C++教程,文档中还包含英文版

    9.2.2 成员函数get和put 252 9.2.3 成员函数putback、peek和ignore 257 9.2.4 字符操作函数 258 9.3 标准string类 261 9.3.1 标准类string简介 261 9.3.2 string类的输入/输出 263 9.3.3 使用string类进行...

    WAP 无线应用协议

    4.3 WML字符集 51 4.3.1 参考处理模型 51 4.3.2 字符实体 51 4.4 WML语法 51 4.4.1 实体 52 4.4.2 元素 52 4.4.3 属性 52 4.4.4 注解 52 4.4.5 变量 52 4.4.6 区分大小写 53 4.4.7 CDATA 部分 53 4.4.8 处理指令 53 ...

    delphi函数集81个

    delphi函数集 1. CustomCursor ................. 自定义光标 2. ReadRegKey ................... 读注册表键值 3. WriteRegKey .................. 写注册表键值 4. GetExePath ................... 取应用程序路径...

    C++大学教程,一本适合初学者的入门教材(part2)

    11.4.2 成员函数get和getline 11.4.3 istream类中的其他成员函数(Peek、Putback和ignore) 11.4.4 类型安全的I/0 11.5 成员函数read、gcount和write的无格式输人/输出 11.6 流操纵算子 11.6.1 整数流的...

    C++大学教程,一本适合初学者的入门教材(part1)

    11.4.2 成员函数get和getline 11.4.3 istream类中的其他成员函数(Peek、Putback和ignore) 11.4.4 类型安全的I/0 11.5 成员函数read、gcount和write的无格式输人/输出 11.6 流操纵算子 11.6.1 整数流的...

    JavaScript实战

    第一部分 JavaScript入门 1 第1章 编写第一个JavaScript程序 1 1.1 编程简介 1 什么是计算机程序 2 1.2 如何把JavaScript添加到页面 3 外部JavaScript文件 5 1.3 第一个JavaScript程序 7 1.4 把文本写到Web页面上 9 ...

    串口中断服务函数集文本文件

    //可供使用的函数名: //char getbyte(void);从接收缓冲区取一个byte,如不想等待则在调用前检测inbufsign是否为1。 //getline(char idata *line, unsigned char n); 获取一行数据回车结束,必须定义最大输入字符数 //...

    php网络开发完全手册

    12.5 在JavaScript中调用PHP程序 196 12.5.1 页面的跳转 196 12.5.2 隐性调用PHP程序 196 12.6 JavaScript和PHP的综合实例——表单 12.6 验证 197 12.6.1 表单设计 197 12.6.2 JavaScript代码设计 199 12.6.3 PHP...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例083 过滤论坛帖子中的空白和特殊字符 118 实例084 对论坛帖子的内容进行转义 119 实例085 还原论坛中帖子的内容 120 实例086 截取论坛标题 121 实例087 分割、合成字符串 121 实例088 查询关键字描红 122 实例...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例083 过滤论坛帖子中的空白和特殊字符 118 实例084 对论坛帖子的内容进行转义 119 实例085 还原论坛中帖子的内容 120 实例086 截取论坛标题 121 实例087 分割、合成字符串 121 实例088 查询关键字描红 122 实例...

    PHP程序开发范例宝典III

    让你短时间内由一名菜鸟到高手绝对没问题! 由于权限有限,分3部份...实例251 在查询中使用字符串函数 387 实例252 在查询中使用日期函数 388 8.19 having语句应用 390 实例253 利用having语句过滤分组数据 390 ...

    [asp dll 函数 web 组件 源码]鱼鱼asp函数组件(fishasp20090218.dll)

    '天枫ASP class v1.0鱼鱼修改版,集常用asp函数于一体 '天枫版权所有http://www.52515.net 'QQ:76994859 EMAIL:Chenshaobo@gmail.com '所有功能函数名如下: '-------------------------...

    正则表达式

    [xyz] 字符集(character set),匹配这个集合中的任一一个字符(或元字符) [^xyz] 不匹配这个集合中的任何一个字符 [\b] 匹配一个退格符 \b 匹配一个单词的边界 \B 匹配一个单词的非边界 \cX 这儿,X是一个控制符,/\...

    jQuery详细教程

    某些其他 JavaScript 库中的函数(比如 Prototype)同样使用 $ 符号。 jQuery 使用名为 noConflict() 的方法来解决该问题。 var jq=jQuery.noConflict(),帮助您使用自己的名称(比如 jq)来代替 $ 符号。 亲自试一...

Global site tag (gtag.js) - Google Analytics