一、先来看一些有趣的字符编码转换
代码 |
以GBK格式保存 |
以UTF-8格式保存 |
String str = "cn中国"; |
|
|
java.net.URLEncoder.encode(str, "iso-8859-1") |
cn%3F%3F |
cn%3F%3F |
java.net.URLEncoder.encode(str, "gbk") |
cn%D6%D0%B9%FA |
cn%D6%D0%B9%FA |
java.net.URLEncoder.encode(str, "utf-8") |
cn%E4%B8%AD%E5%9B%BD |
cn%E4%B8%AD%E5%9B%BD |
new String(str.getBytes(),"iso-8859-1") |
cn???ú |
cnä¸å½ |
new String(str.getBytes(),"gbk") |
cn中国 |
cn涓浗 |
new String(str.getBytes(),"utf-8") |
cn?й? |
cn中国 |
JavaScript |
|
escape('cn中国') |
cn%u4E2D%u56FD |
encodeURI('cn中国') |
cn%E4%B8%AD%E5%9B%BD |
encodeURIComponent('cn中国') |
cn%E4%B8%AD%E5%9B%BD |
二、Encoding与contentType乱码
1,JSP文件中的Encoding与contentType的区别:
Encoding:该JSP文件保存时所用的编码。
contentType:该文件从服务器发送给客户端时的编码(gbk,utf-8均可正确显示)。
两种编码可以不同。
常见设置:
Encoding="utf-8" contentType="text/html;charset=utf-8"
2,初学者可能喜欢用记事本、EditPlus进行编写JSP文件,在windows系统上默认保存格式是gbk的,如果Encoding设置成了utf-8,那就会有乱码。解决办法就是先打开记事本,然后以UTF-8的格式打开JSP文件,删除掉乱码即可;或拷贝到MyEclipse中进行修改。
三、contentType导致form,herf提交乱码
表单提交方式 "cn中国" |
ContentType |
TCP Monitor监测到的数据 |
FORM GET方式 |
UTF-8 |
cn%E4%B8%AD%E5%9B%BD |
GBK |
cn%D6%D0%B9%FA |
FORM POST方式 |
UTF-8 |
cn%E4%B8%AD%E5%9B%BD |
GBK |
cn%D6%D0%B9%FA |
超链接方式 |
UTF-8 |
cn涓浗 |
GBK |
cn中国 |
和第一张表对应着看,是不是发现了一些规律!
(一)FORM
FORM表单的编码方式与JSP中contentType的设置有关,GBK编码成GBK,UTF-8编码成UTF-8。这时,当我们在后台取回表单数据的时候,要对应的设置与表单所在页面的contentType格式。简单点说:格式要一一对应。
解决方案:
request.setCharacterEncoding("GBK");或者
request.setCharacterEncoding("UTF-8");
(二)超链接
那么对于超链接呢?对应着看第一张表的倒数第二行。我们传递的数据按new String(str.getBytes(),"gbk")方式进行了解码。如果前台的contentType正好是GBK,那么提交到后台的数据无需解码了。但如果是UTF-8那就要还原成我们原来的编码格式(被解码过了)。
String str = new String(str1.getBytes("gbk"));
这样就可以取回原来的值。
这里值得一提的是:
String str1 = new String(str.getBytes("gbk")); //这是按GBK方式编码
String str2 = new String(str1.getBytes(),"gbk"); //这是按GBK方式解码
所以大家要记牢两者的区别,以免在解码的时候又编码了一次,很难被发现。
实际上,在处理这类URL自带中文的情况下,一般使用
java.net.URLEncoder.encode(str, "utf-8")或JS中的encodeURI('cn中国')
进行URL编码,这样我们的后台程序可以使用同一种方法进行解码了。
例如,常见的用户登录失败,我们给用户一个提示信息:
String url = java.net.URLEncoder.encode("login.jsp?error=密码不正确","utf-8");
response.sendRedirect(url);
这样在前台页面:
四、AJAX乱码
AJAX GET方式 |
cn中国 |
AJAX POST方式 |
cn涓浗 |
有了上面的解决超链接方式乱码的经验,这个解决起来就简单了。请参看上面所述超链接乱码解决方案。
五、JQuery中的AJAX乱码
JQuery GET方式[非URL拼接] |
cn%E4%B8%AD%E5%9B%BD |
JQuery POST方式 |
cn%E4%B8%AD%E5%9B%BD |
还是JQuery厚道啊!汉字已经按FORM表单的URL进行了编码,解决起来很容易。请参见FORM表单乱码解决方案。
六、MYSQL乱码
解决MYSQL乱码有三点,说一下:
1,在安装的时候选那个“日本话”那个选项,这样才能支持中文。
2,请不要使用navicat来创建数据库,它默认的还是拉丁文。请手写SQL建库语句,并设置编码。
3,创建表的时候要选UTF8,另外字段也要选UTF8编码
request.setCharacterEncoding("UTF-8");
之后就可以取出error中的内容,直接显示了。
分享到:
相关推荐
本文将深入探讨“JSP乱码”的多种解决方案,并提供实用的解决策略。 1. **理解字符编码的基本概念** - 字符编码是计算机对文字进行存储和处理的标准,常见的有ASCII、GBK、UTF-8等。 - JSP页面默认使用ISO-8859-1...
### jsp乱码解决方案 #### 一、引言 在Web开发中,特别是使用Java Server Pages (JSP)进行开发时,字符编码问题是一个经常遇到的技术难题。如果处理不当,很容易导致网页显示乱码,影响用户体验及数据的正确性。...
JSP乱码通常发生在字符编码不一致或者处理不当的情况下,这会影响用户界面的显示,导致文字显示为不可读的方块或者特殊字符。本文将深入探讨JSP乱码的原因及其解决方案,帮助开发者有效地处理这类问题。 ### 1. JSP...
jsp编码 jsp乱码解决方案 jsp编码是Java Web开发中的一项重要技术,jsp编码直接影响着Web应用程序的正常运行。jsp编码乱码问题是jsp开发中常见的问题之一,该问题可能会导致jsp页面显示乱码,影响用户体验。因此,...
本文将详细讲解三种解决JSP乱码的方法。 ### 1. 设置页面编码 JSP页面的编码设置是解决乱码问题的基础。在JSP文件的顶部,使用`<%@ page>`指令设置页面编码。例如: ```jsp ;charset=UTF-8" language="java" %> `...
jsp 乱码详解(jsp,mysql,tomcat) 基本涵盖所有的乱码解决方法。使用的utf-8作为例子
解决jsp页面乱码,页面信息配置,tomcat配置以及各种信息配置
【JSP中文乱码处理详解】 在Web开发中,JSP中文乱码是一个常见的问题,主要涉及页面显示、表单提交以及数据库操作等环节。理解并掌握这些环节的编码处理至关重要,以确保数据的准确性和用户体验。 1. **JSP文件的...
本文将根据“jsp页面乱码处理”的标题与描述,深入解析解决JSP乱码问题的策略,并结合具体代码实例,帮助开发者彻底摆脱这一难题。 #### JSP乱码的根本原因 JSP页面的乱码通常源自字符编码不一致,即不同环节使用...
jsp中文乱码问题详解 在jsp中文乱码问题中,乱码的出现是由于编码格式不一致所导致的。在jsp文件中,存在三个地方的编码格式:jsp文件的存储格式、解码格式和控制浏览器的解码方式。如果这三个地方的编码格式不一致...
"jsp乱码解决超酷,通过web.xml配置"这个标题表明,我们将通过配置`web.xml`文件来解决JSP页面中的乱码问题。下面将详细介绍这个过程以及相关的知识点。 首先,我们需要理解JSP乱码产生的原因。当用户通过表单提交...
### JSP乱码问题解决 #### 一、JSP页面显示乱码 在JSP页面开发过程中,中文乱码是一个常见的问题。这个问题主要是由于服务器端和客户端(浏览器)的编码设置不一致导致的。 **原因分析:** 1. **服务器编码设置...
在Web开发中,尤其是涉及到Java和JSP的项目,中文乱码问题常常困扰着开发者。本文将深入探讨这个问题,提供解决方案。 首先,我们需要理解乱码的根源。乱码通常由于字符编码不一致导致,尤其是在JSP文件中,不同的...
解决 JSP 中文乱码问题 解决 JSP 中文乱码问题是一个很常见的问题,在 JSP 开发过程中,经常出现中文乱码的问题,可能一至困扰着大家。下面我们将详细讨论 JSP 中文乱码问题的成因和解决方法。 JSP 中文乱码问题的...
JSP乱码问题解决方案 JSP乱码问题是指在JSP页面中遇到的字符编码问题,导致页面显示乱码的现象。下面是解决JSP乱码问题的一些常见方法: 首先,在JSP页面中,我们可以使用String的getBytes()方法将字符串转换为...
JSP 中文乱码问题解决办法 JSP 页面中中文乱码问题是指在 JSP 页面中使用中文时,页面显示乱码的现象。这种问题的解决办法可以从多方面入手,包括设置页面的字符编码、使用 POST 方式提交表单、使用 GET 方式提交...
JSP乱码问题主要由字符编码不一致引起,通过统一和正确地设置各个环节的编码,可以有效避免这类问题。对于具体的项目,需要根据实际情况分析乱码产生的环节,并针对性地调整相关配置。提供的解决方案涵盖了常见的...
下面将详细阐述servlet和jsp中文乱码的处理方式。 1. **理解编码基础** - **Unicode**:全球统一的字符编码标准,包含了世界上几乎所有的字符。 - **UTF-8**:最常用的Unicode编码方式,它以字节为单位进行编码,...
文档《JSP各种乱码的处理(一).doc》和《JSP各种乱码的处理(二).doc》中可能详细列举了各种JSP乱码问题的实例及解决方法,包括但不限于文件上传、读取流、数据库操作等方面,建议参考学习,以便更全面地理解并解决...