`
mmclxq
  • 浏览: 6782 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
最近访客 更多访客>>
社区版块
存档分类
最新评论

encodeURI两次原因

    博客分类:
  • js
 
阅读更多

      如果因为项目需要,不能指定容器(web服务器)使用何种编码规则来解码提交的参数, 比如:需要接收来自不同页面,不地编码的参数内容时。 (又或者是开发人员被这有点复杂的东东搞得晕头转向,不懂得如何正确的去做好这接收参数的工作)这个时候,在客户端对参数进行二次编码,可以有效的避开提交多字节字符”的这个棘手问题。
因为第一次编码,你的参数内容便不带有多字节字符了,成了纯粹的 Ascii 字符串。(这里把编第一次的结果叫成 [STR_ENC1] 好了。[STR_ENC1] 是不带有多字节字符的)再编一次后,提交,接收时容器自动解一次 (容器自动解的这一次,不管是按 GBK 还是 UTF-8 还是 ISO-8859-1 都好,都能够正确的得到 [STR_ENC1])
然后,再在程序中实现一次 decodeURIComponent (Java中通常使用 java.net.URLDecoder(***, "UTF-8")) 就可以得到想提交的参数的原值。

分享到:
评论
1 楼 tengfeineu 2012-03-19  
说的不明不白

相关推荐

    URL传中文参数导致乱码的解决方案之encodeURI

    因此,为了避免这种情况,前端进行两次`encodeURI`编码,而后端使用指定编码(如UTF-8)进行解码,是一种较为稳妥的策略。 当然,如果我们能够确保容器的默认编码方式与我们的应用编码方式一致,也可以只在前端进行...

    JS的encodeURI和java的URLDecoder.decode使用介绍.docx

    - `encodeURI`通常需要调用两次,这是因为第一次编码后的字符串可能包含非ASCII字符,第二次编码可以确保所有字符都被正确编码。 - 编码后的字符串可以直接拼接到URL中。 #### 三、Java中的`URLDecoder.decode`方法...

    Jquery serialize() 中文乱码及解决方法

    然而,在某些情况下,我们需要对数据进行两次 encodeURI 才能确保数据的正确性。这是因为浏览器的编码设置可能不同,服务器端的编码设置也可能不同。因此,我们需要对数据进行两次 encodeURI,以确保数据的正确性。 ...

    JS的encodeURI和java的URLDecoder.decode使用介绍

    // 调用两次encodeURI方法以确保所有字符都被编码 var href = "<%=basePath%>recordManager/test_js_decodeURI.action?params=" + encodedData; ``` 在上述代码中,变量data被双重编码,然后拼接到URL中。这样做...

    java中文乱码之解决URL中文乱码问题的方法

    - **二次转码**:先使用`encodeURI()` 编码一次,再用`encodeURIComponent()` 编码一次,这样URL中的特殊字符都会被编码。在服务器端,使用`URLDecoder.decode(name, "UTF-8")` 进行解码。 2. **Java服务器端处理*...

    url传值异常java.io.CharConversionException: isHexDigit

    // 由于某些字符可能需要两次编码,这里使用了两次encodeURI url = encodeURI(url); ``` 在服务器端,接收URL参数时,需要解码这些编码的值。在Java中,使用`java.net.URLDecoder.decode`方法来完成这一过程。在...

    JavaScript中的常见问题解决方法(乱码,IE缓存,代理)

    2.在客户端进行两次encodeURI,在服务器端进行一次转换。 第2种方法能解决问题的原因: 进行两次转换后,在第一次getparameter方法中进行第一次解码,因为解出来的是英文(第一次encode之后的结果),所以不会出问题...

    js传参乱码解决(亲测可行)

    这里使用了两次`encodeURI()`函数,是为了确保编码的准确性。需要注意的是,`encodeURI()`函数会保留大部分特殊字符不变,如#、+等,因此通常还需要再进行一次编码来避免这些问题。 ##### 2. 后端解码处理 在后端...

    domino xpages URL中文传值

    - 描述中提到的 "前端必须使用 `encodeURI` 两次加密" 是为了确保中文字符正确地被编码。这是因为一次 `encodeURI` 可能不足以应对所有情况,特别是在某些服务器或浏览器环境下。使用两次 `encodeURI` 可以增加兼容...

    DanDanPlayForiOS:弹弹play iOS版 (非官方)。原作者已经不再维护, 正在用Flutter重写。此版本是在原OC的基础上继续使用Swift混编, 添加新功能

    [bug fix] 修复了无法远程BT下载encodeURI两次导致无法下载 [feature] 增加了新的远程PC文件查看界面 支持文件索引 以文件名展示 功能介绍 视频智能识别 支持从其它APP或者通过HTTP的方式导入视频 系统要求 最低支持...

    Ajax传递中文参数到后台乱码的有效解决方法

    在Web开发中,Ajax(Asynchronous JavaScript and ...此外,文章中提到的部分内容可能存在OCR扫描识别错误,但是其核心思路是清晰的,即通过前端两次encodeURI编码和后端两次URLDecoder解码来保证中文字符的正确传递。

    前后台字符集转码.txt

    这里进行了两次`encodeURI()`操作,主要是为了避免某些特殊字符未被完全编码。这种做法虽然有些冗余,但在某些情况下可以提高兼容性。最终,通过`window.location`属性将构造好的URL重定向到服务器端。 ### 后端...

    页面get请求 中文参数方法乱码问题的快速解决方法

    两次使用encodeURI()方法:例如:encodeURI(encodeURI(“中文”)),然后再服务器中使用URLDecoder.decode(“中文”, “UTF-8”); 以上这篇页面get请求 中文参数方法乱码问题的快速解决方法就是小编分享给大家的全部...

    JSP中js传递和解析URL参数以及中文转码和解码问题.docx

    这里的关键在于使用`encodeURI`两次对参数值进行编码,确保中文等特殊字符能够正确传输。`encodeURI`函数用于编码整个URI,而`encodeURIComponent`用于编码URI的组成部分,如路径或查询参数。在这个例子中,由于我们...

    java认证_Ajax中文乱码问题及解决方法.doc

    在jQuery的Ajax请求中,可以对包含中文的参数进行两次`encodeURI`编码。这是因为`encodeURI`函数可以编码URI中的特殊字符,但保留某些特殊字符,如空格。在前端,修改Ajax请求的data部分如下: ```javascript data:...

    get请求乱码问题 java

    ` 这样的操作会导致URL被编码两次,进一步增加了乱码的风险。虽然`encodeURI()`函数可以避免大部分特殊字符被编码成百分号加十六进制的形式,但如果连续调用,可能会导致不必要的二次编码,破坏原始数据结构。 ### ...

    从js向Action传中文参数出现乱码问题的解决方法.docx

    在上述代码中,`realName`是一个中文参数,通过`encodeURI(encodeURI(realName))`进行两次编码,以确保在URL中正确传输。 然后,在服务器端的Action中,接收到参数后,需要进行解码以恢复原始的中文字符。在Java中...

    AJAX中文乱码问题探讨及解决

    AJAX中文问题分为两大类: 1)发送路径中的参数有中文,在服务器段接收参数值是乱码 例如: var url=”a.... //两次,很关键[具体为什么,我也不清楚] /********************************************/ 也有人写成var

    extjs 前后台交互参数出现中文乱码问题的解决方法

    这里需要注意的是,对于包含中文的参数,通常会进行两次`encodeURI()`操作,以确保数据能够被正确地编码并传输到服务器端。 #### 后端解码处理 在后端服务器端(例如Java环境下),可以通过`java.net.URLDecoder....

Global site tag (gtag.js) - Google Analytics