`

中文传值乱码问题

    博客分类:
  • js
 
阅读更多

原文出处:http://eeelin.iteye.com/blog/1777719

URL编码很混乱

 

1.直接在网址栏输,网址路径中包含汉字,"www.xx.com/ff/问答",

"问答"将用的是utf-8编码.

 

2.直接在网址栏输,网址种的参数部分有汉字,"www.xx.com/ff/info.php?name=苏州",

"苏州"用的是操作系统的'默认编码'编码.据说可以在浏览器里设置这个编码.

 

3.在网页上点submit按钮,GET或者POST提交,按照网页编码格式编码,下面是U8编码

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>

 

4.用AJAX提交,有的浏览器是U8,有的是取系统默认编码.

 

5.其他乱七八糟的....

 

解决办法

无任系统是什么,无任浏览器是什么,无任网页编码是什么

用Javascript的encodeURI()方法编码,就都变为unicode编码.

[encodeURI()的JS解码函数是decodeURI()]

 

客户端:两次JS

encodeURI(encodeURI($("#userName").val()));

服务端:一次解码

Java: String name = URLDecoder.decode(old,"UTF-8");

php: urldecode ("%E8%83%A1%E6%96%8C");

 

原理:

url只可以传ASCII码里的字符,其他字符过不了,先要变%XX才可以通过.

比如:"胡斌"要变"%E8%83%A1%E6%96%8C"[u8编码]才可以通过.

这里最最重要的是:E8-83-A1这U8编码的结构非常重要,因为你知道这是U8,

为了不破坏这个结构,再URL编码一下,变:

%25E8%2583%25A1%25E6%2596%258C

可以看到,只有"%"再次变"%25",E8-83-A1这个你知道的U8编码结构依然还在.

然后:%25E8%2583%25A1%25E6%2596%258C到了服务器,

服务器根据规定[通过的肯定是URL编码过的,然后检查有没有类似"%XX"的东西,

看见"%XX"此类的东西,服务器帮着还原了,注意'%'后仅仅是两个X]

%25E8%2583%25A1%25E6%2596%258C还原成%E8%83%A1%E6%96%8C,

就是说服务器以为你传的参数就是"%E8%83%A1%E6%96%8C",

但是你知道,"%E8%83%A1%E6%96%8C"确实是你要的参数,只不过你编码过了,

而且你也知道这个是U8编码结构,所以你再用U8反编一次就可以了.

 

你也可以这么记:

服务器这么"吃"数据,只能吃"一个字母"或者"%XX"这两种格式.其他吃不下.

分享到:
评论

相关推荐

    前后台传值乱码问题万能思想,通用

    "前后台传值乱码问题万能思想,通用"的主题着重于解决这个问题的通用思路,而不是具体的代码实现。以下是对这个主题的详细说明: 首先,我们需要理解“乱码”产生的原因。乱码通常出现在数据在不同字符集之间转换时...

    jsp页面传值中文乱码问题处理.docx

    jsp页面传值中文乱码问题处理 在 JSP 页面中传值时,中文字符可能会出现乱码问题,这是由于字符编码不一致所引起的。下面将详细讲解 JSP 中文乱码种类和解决方案。 JSP 文件中文内容显示乱码 在 JSP 文件中,如果...

    java中文传值乱码问题的解决方法

    本文将详细介绍如何解决Java中文传值乱码的问题。 首先,我们需要理解乱码产生的原因。乱码通常发生在字符编码不一致的情况下,例如,数据源使用的是UTF-8编码,而处理数据的程序或系统使用的是GBK或ISO-8859-1等...

    jsp传值中文乱码问题解决方法示例介绍.docx

    本篇将详细介绍如何解决JSP传值过程中出现的中文乱码问题。 首先,我们需要理解乱码产生的原因。在网页中,数据的编码和解码过程需要保持一致。如果服务器和客户端之间使用的字符编码不同,就可能出现乱码。例如,...

    jsp传值本地无乱码测试机出现乱码问题解决

    #### JSP传值与乱码问题 在JSP中,传值通常指的是通过表单提交、URL参数、cookie、session等方式在客户端(浏览器)和服务器端进行数据交互。当数据从客户端传递到服务器时,如果编码设置不一致,或者客户端与...

    structs传值中文乱码

    在传值时会遇到中英文乱码 &lt;filter-name&gt;GBKEncoding &lt;filter-class&gt;com.sshnews.filter.GBKEncodingFilter&lt;/filter-class&gt; &lt;filter-name&gt;GBKEncoding &lt;url-pattern&gt;/* &lt;/filter-mapping&gt;

    weblogic10在UNIX下部署,中文乱码问题的解决

    在部署WebLogic Server 10版本于UNIX操作系统时,可能会遇到中文乱码的问题,这主要...在实际操作过程中,可以参考提供的`weblogic10在UNIX下部署,中文乱码问题的解决.txt`文件,里面可能包含具体的步骤和解决方案。

    asp.net中URL参数传值中文乱码的三种解决办法

    了解这些基本概念后,结合以上三种方法,我们可以有效解决ASP.NET中URL参数传递中文时的乱码问题。在实际开发中,应根据具体项目需求和环境选择合适的方法,确保数据的正确传递。同时,为了兼容更多情况,建议在开发...

    asp.net页面通过URL参数传值中文乱码问题解决办法

    在Asp.Net开发中,遇到页面通过URL参数传递中文字符时出现乱码是...以上就是解决Asp.Net页面通过URL参数传递中文乱码问题的详细方法,通过选择合适的方法或组合使用这些方法,可以确保中文字符在URL中正确无误地传递。

    jsp传值中文乱码问题解决方法示例介绍

    本文将详细介绍如何解决JSP中的中文乱码问题,并通过示例代码进行说明。 首先,我们要理解乱码产生的原因。在Web应用中,数据在不同层次间传输时,如果字符编码不一致,就可能导致乱码。例如,从数据库读取的中文...

    struts2配置文件传值中文乱码

    本文将围绕“Struts2配置文件传值中文乱码”这一主题,深入探讨其成因、解决方案以及相关的配置细节,旨在帮助开发者有效解决中文乱码问题,提升用户体验。 ### Struts2框架简介 Struts2是Apache组织下的一个开源...

    乱码问题的解决

    "乱码问题的解决" 在 Web 开发中,乱码问题是常见的难题之一。乱码问题的出现主要是由于编码不一致引起的。编码不一致可能出现在多个方面,如页面编码、服务器编码、客户端编码、数据库编码等。在本文中,我们将...

    url传值到Action乱码解决方案

    在Web应用程序中,URL传值到Action是一个常见的操作,但是当传递中文参数时,经常会出现乱码问题。今天,我们将讨论如何解决URL传值到Action乱码问题,特别是在Struts2框架中。 乱码问题的原因 乱码问题的原因是...

    java传值中的乱码

    ### Java传值中的乱码问题及最简易的解决方法 在Java Web开发中,经常会遇到一个令人头疼的问题:客户端向服务器传递数据时出现乱码。这种情况不仅会影响用户体验,还可能导致程序逻辑错误。本文将深入探讨Java传值...

    struts 2中文汉字传值

    在处理中文汉字传值时,可能会遇到编码问题,导致中文字符无法正确传递。以下是对标题和描述中涉及知识点的详细解释: 1. **字符编码问题**:在Java Web应用中,尤其是在与前端交互时,字符编码是关键。页面通常...

    解决ajax乱码和页面传值问题

    在Web开发中,Ajax(Asynchronous ...总结,解决Ajax乱码问题主要涉及数据编码、请求头设置和服务器端解码,而页面传值则需根据需求选择适当的方法。理解并熟练运用这些技巧,能显著提升Web应用的性能和用户体验。

    js传递中文乱码

    js向服务器端传递中文时乱码,搜索是可以通过这个解决乱码问题,包括传值乱码

    jquery的ajax()函数传值中文乱码解决方法介绍

    在使用jQuery的ajax()函数进行数据传输时,中文乱码问题常常困扰着开发者。这个问题主要出现在数据发送到服务器时,由于编码格式不一致导致的字符乱码。以下是一些解决此问题的方法: 方法一:使用`encodeURI()`...

    jQuery Ajax传值到Servlet出现乱码问题的解决方法

    总的来说,解决Ajax传值到Servlet的乱码问题需要确保每个环节的编码设置一致,从JSP页面到Ajax请求,再到Servlet的接收和响应。只有这样,才能保证数据在整个传输过程中不发生乱码。记得在排查问题时,逐步检查每个...

Global site tag (gtag.js) - Google Analytics