我的乱码之路——JSP与MySQL交互的中文乱码解决方案及总结
首先实现了一个StringConvert bean(GBtoISO()和ISOtoGB()两个方法),解决了与MySQL数据库
交互的时候的部分中文乱码问题:在JSP程序中读取MySQL的中文内容,用这两个方法可以解决乱码问题
。
但是从JSP写入到MySQL的中文内容都成了乱码,并且再读出来的时候也显示为“??”,在这里应
该出现了编码转换过程中的字符信息丢失。郁闷的是,我在命令行窗口中登陆到MySQL后,执行如
“INSERT INTO customerVALUES('字符',...)”这样的语句时,写入到数据表中的中文内容又是显示正
常的!!!数据库使用的字符集是utf8。
碰壁多次,终于发现一条解决问题的路径:查看MySQL手册的时候,看到一条这样的语句:
Toallow multiple character sets to be sent from the client, the "UTF-8"encoding should be
used, either by configuring "utf8" as the defaultserver character set, or by configuring
the JDBC driver to use "UTF-8"through the characterEncoding property.
此外,在查阅《MySQL权威指南》时,发现在查询语句中可以使用这样的语法将字符串转换到一个
给定的字符集:_charset str。
其中charset必须是服务器支持的某个字符集。在本例中,shopdb数据库使用的默认字符集是utf8
,于是开始测试:
先输入INSERT INTO publish Values('8',_gb2312 '高等教育出版社') 写入后中文变成“??
”
再试INSERT INTO publish Values('8',_gbk '高等教育出版社') 结果同上
INSERT INTO publish Values('8',_utf8 '高等教育出版社') 这下更干脆,什么都没有!!
快疯了!!没办法,用show character set;命令查看MySQL支持的字符集,心想我都试一遍总
有一个能成功吧。浏览了一下,发现没有几个熟悉的字符集,就只剩下一个latin1(ISO-8859-1)比较常
见了,不会是它吧,一试之下果然便是。
INSERT INTO publish Values('8',_latin1 '高等教育出版社') 输入中文能够正确显示。
这下总算找到方法了,把Tomcat下配置的数据库连接池的url改为
"...characterEncoding=UTF-8",然后把写入数据库的中文内容用
String s2 = new String(s1.getBytes("gb2312"),"ISO-8859-1")进行转码,其中s1为中文字符
串.然后再写入到数据库一切显示正常。
为解决这个问题查看了n多资料,现作一个总结:由于字符集和字符编码方式的不同,在OS以
及程序之间传递数据(尤其是multiple character sets中的数据)时便会产生乱码以及字符信息的丢
失.解决这个问题的关键便是了解数据输出端和接收端使用的字符集和字符编码方式,如果这两种编码
方式不同,便需要在数据出口或入口处进行 转码。一般的说,在编写代码,编译,以及运行期间都会字
符数据的传递,因此需要特别小心。
在编写代码的时候,你可能会使用某种开发工具,例如我正在使用的Eclipse.或许在写的时候
一切正常,可是一旦保存后再次打开文档,所有的中文字符都变成了乱码。这是因为在编写的时候,这
些字符数据都在内存的某个stream中,ok,这没问题,可是保存的时候这个stream中的数据会被写入到
硬盘,使用的就是你的开发工具默认的编码方式,如果很不幸你的开发工具默认编码方式是ISO-8859-1
,中文字符信息就不能正确地存储。Eclipse中可以这样查看并修改默认字符编码方式:Project-
>Properties->info,这里有"default encoding for text file"。如果设置为GBK,那么编写代码
并保存这关就过了。
对于JSP程序而言,编写完代码后就交给Container,首先它们会被转成.java文件,然后编译成
.class才能提交给服务器执行.这个过程也存在字符编码问题.java编译器(javac)使用操作系统的语
言环境作为默认的字符编码方式,JRE(Java Runtime Environment)也是这样。只有当编译和运行环境
的字符编码方式与存储源文件的编码方式相同时,中文字符才能正确地显示。否则就需要在运行时进行
转码,使它们使用兼容的编码。这里的设置可以分为几个层次:操作系统层支持的语言,这是最重要的
,因为它会影响JVM的默认字符编码方式,同时对字符的显示,如字体等有直接影响;J2EE服务器层
,大多数服务器都可以对字符编码进行自定义的配置,例如Tomcat就可以通过web.xml中设置
javaEncoding参数设置字符编码,默认是UTF-8.
IE也可以设置成总是使用UTF-8编码来发送请求.应用程序层,每个配置在服务器下的程序都可以
设置自己的编码方式,这个我目前还没有用到,以后再学习。
运行时的转码,运行时期,应用程序很可能需要与外部系统进行交互,例如对数据库进行读写
,对外部文件进行读写.在这些情况下,应用程序免不了要和外部系统进行数据交换。那么对于中文字
符, 数据出入口的编码方式就显得特别重要了。一般外部系统都有自己的字符编码方式,我的例子中
配置的MySQL就是使用的UTF-8编码。JSP页面通过设定"charset=gb2312",
使用gb2312编码,在它与数据库交互的时候就需要进行显式的转码才能正确处理中文字符。
分享到:
相关推荐
JSP乱码解决大全 JSP页面显示乱码 表单提交中文时出现乱码 数据库连接
本文将深入探讨JSP乱码的原因及其解决方案,帮助开发者有效地处理这类问题。 ### 1. JSP乱码的成因 - **字符集设置不一致**:JSP文件、HTML页面、HTTP头、Servlet输出以及数据库存储等环节的字符集设置不一致,...
本文将深入探讨“JSP乱码”的多种解决方案,并提供实用的解决策略。 1. **理解字符编码的基本概念** - 字符编码是计算机对文字进行存储和处理的标准,常见的有ASCII、GBK、UTF-8等。 - JSP页面默认使用ISO-8859-1...
### jsp乱码解决方案 #### 一、引言 在Web开发中,特别是使用Java Server Pages (JSP)进行开发时,字符编码问题是一个经常遇到的技术难题。如果处理不当,很容易导致网页显示乱码,影响用户体验及数据的正确性。...
### JSP中的中文乱码问题解析与解决方案 #### 一、引言 在Web开发过程中,尤其是使用Java Server Pages(JSP)进行页面渲染时,经常会出现中文字符显示乱码的问题。这不仅影响用户体验,也增加了项目的调试难度。...
以下是一些关于如何解决JSP中中文乱码问题的详细解释和方法: 一、JSP页面显示乱码 JSP页面显示乱码通常是由于页面编码设置不正确或者与浏览器的默认编码不匹配导致的。在JSP页面中,可以通过在页面顶部添加`; ...
解决jsp页面乱码,页面信息配置,tomcat配置以及各种信息配置
### JSP乱码解决方案大全 #### 一、概述 在使用Java Server Pages(JSP)进行Web开发时,经常会遇到中文乱码的问题。这不仅影响用户体验,还可能导致数据错误。本文将详细介绍JSP中出现乱码的原因及相应的解决方法...
JSP 中文乱码问题解决办法 JSP 页面中中文乱码问题是指在 JSP 页面中使用中文时,页面显示乱码的现象。这种问题的解决办法可以从多方面入手,包括设置页面的字符编码、使用 POST 方式提交表单、使用 GET 方式提交...
"jsp乱码解决超酷,通过web.xml配置"这个标题表明,我们将通过配置`web.xml`文件来解决JSP页面中的乱码问题。下面将详细介绍这个过程以及相关的知识点。 首先,我们需要理解JSP乱码产生的原因。当用户通过表单提交...
文档《JSP各种乱码的处理(一).doc》和《JSP各种乱码的处理(二).doc》中可能详细列举了各种JSP乱码问题的实例及解决方法,包括但不限于文件上传、读取流、数据库操作等方面,建议参考学习,以便更全面地理解并解决...
**解决JSP乱码的策略** 1. **设置JSP页面编码**:在JSP文件顶部添加`;charset=UTF-8" language="java" %>`,指定页面编码为UTF-8。 2. **修改服务器配置**:在Tomcat的`server.xml`文件中,找到`Connector`标签,...
### JSP乱码问题解决 #### 一、JSP页面显示乱码 在JSP页面开发过程中,中文乱码是一个常见的问题。这个问题主要是由于服务器端和客户端(浏览器)的编码设置不一致导致的。 **原因分析:** 1. **服务器编码设置...
最近实验室做了一个项目,使用jspsmartupload来实现的文件的上传下载,原来在windows平台运行的挺好,但是后来系统移植到linux平台上,结果在上传或下载的文件名中有中文时就会出现乱码。后来查了网上一些人的解决...
JSP 中文乱码问题的成因主要有两方面,一是 Java 和 JSP 文件本身编译时产生的乱码问题,二是 Java 程序于其他媒介交互产生的乱码问题。 Java 和 JSP 文件编译时产生的乱码问题 Java 和 JSP 源文件中可能包含有...
### JSP乱码问题及其解决方法 #### 一、引言 在进行Java Web开发时,经常遇到的一个问题是页面字符编码出现乱码的情况。虽然这看似是一个小问题,但如果处理不当,会对用户体验甚至整个项目的质量产生严重影响。...
### POST方式下的乱码解决方案 #### 1. 使用`request.setCharacterEncoding()`方法 在JSP页面中,可以通过设置`request`对象的字符编码来解决POST请求中的乱码问题。具体做法是在获取参数前调用`request.set...
解决JSP页面显示中文乱码的问题,关键在于确保所有环节使用相同的字符编码。可以按照以下步骤操作: 1. 使用统一的文件编码:确保JSP文件以UTF-8或其他支持中文的编码格式存储,并且IDE(如Eclipse)配置为使用该...
本文将详细讲解三种解决JSP乱码的方法。 ### 1. 设置页面编码 JSP页面的编码设置是解决乱码问题的基础。在JSP文件的顶部,使用`<%@ page>`指令设置页面编码。例如: ```jsp ;charset=UTF-8" language="java" %> `...