`

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();

}

分享到:
评论

相关推荐

    不同字符集编码字符的转换处理

    本文将围绕“不同字符集编码字符的转换处理”这一主题,深入探讨字符集编码的基本概念,以及在实际场景中,如SAP系统与第三方系统交互时如何进行有效的编码转换。 ### 字符集编码基础知识 字符集编码是指计算机中...

    php 编码相互转换类(gbk转换utf8)

    在IT行业中,编码转换是一个常见的需求,特别是在处理中文字符时。GBK和UTF-8是两种广泛使用的字符编码标准,它们各自有不同的特点和适用场景。PHP作为服务器端脚本语言,提供了多种方法来处理编码转换问题,包括...

    GET 方式提交的含有特殊字符的参数

    这个方法接受一个字符串和字符集作为参数,将字符串中的特殊字符转换为百分号编码。在上述例子中,如果我们的字符集是UTF-8,可以这样做: ```jsp String sUDRName6 = "A&T Plastic"; String encodedName = java...

    URL中编码URL特殊字符.docx

    URL(Uniform Resource Locator)是互联网上的资源定位器,遵循特定的规范,如RFC 1738,它限制了URL中可以使用的字符集,通常只允许字母、数字、某些标点符号以及一些特殊字符。然而,当URL需要传递特殊字符,尤其...

    ASP读取Request.QueryString编码的函数代码.docx

    这篇文档中提供了一个自定义的函数,用于处理不同编码方式(如GBK和UTF-8)的Query String参数。以下是对这个函数代码的详细解释: 首先,代码设置页面的字符集为UTF-8,这很重要,因为不同的字符集会影响如何解析...

    C语言UTF8到ANSI和Unicode转换代码

    在MFC项目中使用这些函数,需要确保项目的字符集设置正确,通常设置为“多字节字符集”以便处理ANSI编码。 压缩包中的"字符集转换"文件可能包含C语言的源代码实现,提供了这些转换功能。而"MFC中使用文档.doc"则...

    VBS的函数集-读写二进制文件,UTF8文件,HTTP GET和POST

    * WriteFileUTF8函数:用于将UTF-8编码的字符串写入文件中。 * Base64encode函数:用于将字符串编码为Base64格式。 三、ADODB.Stream对象 * ADODB.Stream对象是一个COM对象,用于处理二进制文件和文本文件的读写...

    系统字体枚举及其字符集的显示

    这篇教程将深入探讨如何通过编程方式枚举系统中的字体,并展示它们所对应的字符集。我们将使用Visual Studio 2010作为开发环境,MFC(Microsoft Foundation Classes)库作为基础框架,同时利用`EnumFontFamiliesEx`...

    基于PHP中自带的字符串操作函数合集

    在实际应用中,根据不同的需求选择合适的字符串处理函数,可以有效地帮助开发人员提高编码效率,保证程序的稳定性和安全性。例如,对于用户输入的数据处理,常常需要用到strip_tags()来去除可能存在的恶意代码,使用...

    基于PHP的URL编码转换工具源码.zip

    5. **应用实例**:URL编码常用于处理查询字符串(GET请求中的参数),POST数据的编码,以及在URL中传递非ASCII字符。 6. **自定义编码**:在某些情况下,开发者可能需要自定义编码逻辑,比如对某些字符进行特殊处理...

    一些有用的自定义配置单元udf函数、特殊数组、json、数学、字符串函数。___下载.zip

    例如,可能需要一个特殊的日期转换函数,或者一个能处理特定格式字符串的函数。文件`hive-third-functions-master`很可能包含了这样的自定义UDF实现,供用户在Hive查询中引用。 2. **特殊数组函数**: 在Hive中,...

    PHP iconv()函数字符编码转换的问题讲解

    总结起来,当使用`iconv()`函数处理字符编码转换时,遇到无法转换的字符,可以通过切换目标字符集、忽略错误或进行近似转换来解决问题。同时,了解和结合使用`mb_convert_encoding()`可以提供更灵活的编码处理方式。...

    使用httpClient组件解析html并解决字符编码

    但是,在实际使用中,经常会遇到字符集编码乱码问题。本文将讨论如何使用HttpClient 3.0解析HTML,并解决字符编码问题。 HttpClient组件简介 Apache HttpClient是一个基于Java的HTTP客户端库,提供了一个强大且...

    get、post请求中文乱码处理方式一

    - 参数编码:客户端对POST数据进行编码,比如在Java中使用`URLEncoder.encode()`,在JavaScript中使用`new Blob([data], {type: 'application/x-www-form-urlencoded;charset=utf-8'})`。 - 服务器端接收:服务端...

    php字符集转换

    在PHP中,字符集转换经常涉及到从一种编码转换到另一种编码,而PHP提供了iconv函数来实现这个功能。iconv函数非常强大,它能够将字符串从一个字符编码转换为另一个字符编码。 从上述文件内容中我们得知,iconv函数...

    VB中ANSI转换成UTF-8

    在VB中进行编码转换,可以使用内置的函数或者第三方库。一个基本的方法是利用`ADODB.Stream`对象,它可以读写文本数据并支持多种编码格式。以下是一个简单的示例: ```vb Dim stream As ADODB.Stream Set stream = ...

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

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

    解决boa服务器get/post请求中文乱码问题

    - URL编码:对于GET请求,URL中的中文字符需要通过`encodeURIComponent`函数进行URL编码,服务器端再进行解码。 2. Sqlite3数据库中文乱码: Sqlite3是一个轻量级的数据库引擎,它在处理中文字符时也有类似的问题...

    get中文传参(解码)

    在IT行业中,尤其是在Web开发领域,GET请求...确保在编码和解码过程中使用一致的字符集,可以避免出现乱码问题,保证数据的准确传输。通过学习这些知识点,开发者可以更好地处理包含中文字符的HTTP请求,提升用户体验。

Global site tag (gtag.js) - Google Analytics