`
Joy.zhang
  • 浏览: 58831 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

解决JSP与MySQL交互的中文乱码问题

    博客分类:
  • Jsp
阅读更多
首先实现了一个StringConvert bean(GBtoISO()和ISOtoGB()两个方法),解决了与MySQL数据库交互的时候的部分中文乱码问题:在JSP程序中读取MySQL的中文内容,用这两个方法可以解决乱码问题。


但是从JSP写入到MySQL的中文内容都成了乱码,并且再读出来的时候也显示为“??”,在这里应该出现了编码转换过程中的字符信息丢失。郁闷的是,我在命令行窗口中登陆到MySQL后,执行如“INSERT INTO customer VALUES(''字符'',...)”这样的语句时,写入到数据表中的中文内容又是显示正常的!!!数据库使用的字符集是utf8。



碰壁多次,终于发现一条解决问题的路径:查看MySQL手册的时候,看到一条这样的语句:To allow multiple character sets to be sent from the client, the "UTF-8" encoding should be used, either by configuring "utf8" as the default server 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与MySQL交互的中文乱码解决方案

    在JSP与MySQL交互时,中文乱码是一个常见的问题,主要涉及到字符编码的不一致。在J2EE环境中,确保各个层次的字符编码统一是解决乱码的关键。以下是一个详细的解决方案: 首先,我们需要理解JSP、MySQL和字符编码的...

    如何解决MySql-JSP中文乱码问题

    在开发Web应用时,尤其是使用Java技术栈如JSP、Servlet与MySQL数据库交互时,中文乱码问题常常困扰着开发者。这个问题的出现主要是由于字符编码不一致导致的,包括数据库编码、连接编码、页面编码等多个环节。下面...

    解决连接mysql中文显示乱码

    这主要涉及到字符编码的兼容性和设置问题,尤其是在使用MySQL数据库与不同编程语言(如Java、JSP)进行交互时更为突出。以下是对如何解决连接MySQL时中文显示乱码问题的详细解析。 ### 解决中文显示乱码的关键知识...

    中文乱码问题分析 自己总结的

    中文乱码问题分析 ...中文乱码问题是 Java 和 JSP 开发中的一种常见问题,解决这些问题需要注意编码方式的一致性,避免在不同的编码方式之间的转换,确保在不同的交互过程中使用的编码方式保持一致。

    解决MYSQL中文乱码

    本篇文章将深入探讨如何解决 MySQL 数据库中的中文乱码问题,以及与之相关的 JSP 页面显示乱码的解决方案。 首先,让我们理解为什么会出现中文乱码。这通常与字符编码不一致有关。在 Web 开发中,数据可能在多个...

    JSP中文乱码问题解决方法小结

    总之,解决JSP中文乱码问题主要在于确定并统一整个系统中的字符集和编码方式。开发者需要关注每个环节,从数据库设置到页面编码,再到参数传递,确保每个步骤都正确处理了字符编码,才能有效地避免乱码现象的发生。

    解决jsp中文乱码问题(转)

    本文将详细介绍如何解决JSP页面中出现的中文乱码问题,包括页面显示、表单提交和数据库连接三个主要方面。 一、JSP 页面显示乱码 当JSP页面中的中文无法正常显示时,通常是由于编码格式不匹配导致的。每个网页都有...

    mysql+jsp+SSH网站开发中文乱码解决方案

    通过以上步骤,可以基本解决MySQL、JSP和SSH框架集成网站开发中的中文乱码问题。在实际开发过程中,要根据项目的具体情况进行调整和测试,确保每个环节都正确处理了字符编码。如果你遇到了特定的问题,可以进一步...

    解决jsp存入数据库中的乱码问题

    在开发Java Web应用程序时,尤其是使用JSP技术与数据库交互时,经常遇到的一个问题是字符编码不一致导致的乱码问题。这通常是由于不同组件(如JSP、Servlet、HTTP请求和数据库)之间的编码设置不匹配所引起的。为了...

    JSP中文乱码常见3个例子及其解决方法.docx

    当JSP页面与数据库交互,存储或查询中文数据时,也可能遇到乱码。这通常涉及到数据库的字符集设置、JDBC连接字符串以及JSP页面的编码设置。 解决方法包括: 1. 确保数据库服务器的字符集支持中文,如设置为`utf8`或...

    mysql乱码问题+中文问题解决

    ### MySQL乱码问题与中文问题解决方案 在处理MySQL数据库时,遇到乱码和中文字符显示不正确的问题是非常常见的。这些问题通常源于字符集设置不当或编码转换错误。以下是从标题、描述、标签以及部分内容中提取的关键...

    解决JSP中文乱码问题.doc

    总结来说,解决JSP中文乱码问题的关键在于确保所有环节的编码和解码方式一致,包括源文件、编译、页面声明、HTTP传输、数据库交互以及文件操作等。了解和掌握这些知识点,可以帮助开发者有效地避免和解决中文乱码...

    JSP+ MySQL中文乱码问题post提交乱码解决方案

    在处理JSP与MySQL交互时,中文乱码问题是一个常见且棘手的问题。特别是在使用POST方法提交含有中文的数据到数据库,并在JSP页面中展示这些数据时,如果未正确处理字符编码,就可能出现乱码现象。本知识点将详细解析...

    JSP中文编码理论及乱码产生原因及问题解决

    本篇文章将深入探讨JSP中文编码理论,分析乱码产生的原因,并提供有效的解决方案。 一、编码基本知识 1. 字符编码:字符编码是计算机表示和处理文字的方式。常见的字符编码有ASCII、GB2312、GBK、GB18030、UTF-8等...

    乱码解决_MYSQL.txt

    通过以上方法可以有效地解决MySQL中的乱码问题,确保数据的准确存储与读取。需要注意的是,字符集设置应当贯穿于整个数据流的各个环节,包括客户端连接、数据库创建、表创建、数据插入及查询等,以确保数据的一致性...

    中文乱码总结出现的原因,及解决方法,包括数据库乱码

    中文乱码的解决方法需要考虑多方面的因素,包括 Java 和 JSP 文件本身的编译、Java 程序与其他存储媒介交互、JSP 与页面参数之间的交互、Java 与数据库之间的交互、Java 与文件/流之间的交互等。通过保持编码的一致...

    jsp中文乱码问题小结

    总结来说,解决JSP中文乱码问题需要从多角度入手,包括客户端的解码与编码设置、服务器端的请求处理和响应输出,以及数据库的字符集配置。正确理解和应用这些策略,可以有效避免和解决中文乱码问题,确保Web应用的...

    JSP乱码解决大全.doc

    在JSP开发中,中文乱码是一个常见的问题,尤其是在处理用户输入、页面显示以及与数据库交互时。以下是一些关于如何解决JSP中中文乱码问题的详细解释和方法: 一、JSP页面显示乱码 JSP页面显示乱码通常是由于页面...

Global site tag (gtag.js) - Google Analytics