`
甘艳丽
  • 浏览: 51621 次
  • 性别: Icon_minigender_2
  • 来自: 湖南
社区版块
存档分类
最新评论

数据库以及JSP页面乱码问题的处理

 
阅读更多

    数据库中和JSP页面中中文显示乱码问题,纠结了我很久。令我兴奋的是,现在已经解决了。刚开始测试时,因为我是在MySQL那个黑框框里面中插入中文数据的,所以没有出现乱码。然而,当我用JSP页面去测试时,情况就不同了。我编写的JSP页面的功能很简单,当输入的用户名和密码都正确时,则将数据库中所以用户的信息用表格显示出来,反之,则提示出错信息。刚开始,我没测试向数据库中插入数据,而是用户名和密码登录,当我输入中文时,到数据库中查找时,查找成功了,但是显示到JSP页面上的信息却是乱码。当时,我觉得很奇怪,数据库中有该用户名,而且查找也成功了,为什么显示的却是乱码。然后,我就在向数据库中查询用户名和密码的方法中,打印了提交的用户名和密码,控制台输出的却是乱码。于是,我就想:提交的是乱码为什么能与数据库中显示的不是乱码的中文能够匹配,觉得可能是数据库中的字符编码有问题?后面,我在Servlet类里添加了一条语句:

 request.setCharacterEncoding("gbk"); 

  页面显示时,却提示出错信息:“帐号或密码错误”,而控制台打印的信息不是乱码。这样,我就更加肯定是数据库中的字符集有问题了。于是,我将MySQL安装目录下的文件my.ini中的

default-character-set=latin1 

 改为了

default-character-set=gbk 

 

 测试之后,还是乱码。然后,我就想测试下:JSP提交的信息插入到数据库中,是否会出现乱码。(都是针对输入中文而言)。果不其然,插到数据库中的信息全是乱码,而且之前在MySQL平台下输入的中文字符也变成了乱码,害得我又将其改回去了。改回去之后,之前在MySQL中输入的中文字符正常,而通过JSP页面提交的中文数据却是乱码,哎,就改这个my.ini文件,都折腾了我很久。后面,都有重新安装mySQL的冲动,但是,我又想,重装mySQL如果没有修改什么,那也没什么区别,况且,像数据库乱码现象,别人肯定遇到过,那就肯定有解决的办法。我就静下心来,到网上查了相关的资料。

     于是,我用

mysql> status;

 指令,查看数据库中的字符编码:显示的是:

Server characterset: latin1
Db characterset: latin1
Client characterset: latin1 
Conn. characterset: latin1 

 

 这样,答案就很明显了,JSP页面编码和解码都是采用gbk,而数据库连接,以及服务器,客户端,数据库本身都是采用latin1编码的,那JSP提交数据到数据库中肯定会出现乱码。那肯定要将数据库中的编码都要设为gbk

 

 

 

 

 

mysql>SET character_set_Client =gbk; 
mysql>SET character_set_Server =gbk; 
mysql>SET character_set_Connection =gbk;
mysql>SET character_set_Database=gbk;

 

 我又执行了 

mysql> status;

  这时显示的是:

Server characterset: gbk 
Db characterset: gbk 
Client characterset: gbk
Conn. characterset: gbk 

 然后,我又执行了

mysql> show variables like 'collation_%';

 

 显示的是:

+----------------------+----------------+
| Variable_name        | Value          |
+----------------------+----------------+
| collation_connection | gbk_chinese_ci |
| collation_database   | gbk_chinese_ci |
| collation_server     | gbk_chinese_ci |
+----------------------+----------------+

 

 当时,以为这样设置就好了,执行了下程序:可是又出现了新的错误:

java.sql.SQLException: Illegal mix of collations (gbk_chinese_ci,IMPLICIT) and (latin1_swedish_ci,COERCIBLE) for operation '='

 

意思是:我数据库中存在两种字符编码,我觉得纳闷了:将编码设为了:gbk,为什么还会有latin1呢?而且我还将我要操作的那个表的编码也设为了gbk编码:

ALTER   TABLE userinfo   CONVERT   TO   CHARACTER   SET   gbk; 

 那为什么会出现Latin1编码呢?然后,我查了下表中各字段的编码:

show full columns from userinfo;

 显示的是:

+-------+-------------+-------------------+------+-----+---------+--------------
--+---------------------------------+---------+
| Field | Type        | Collation         | Null | Key | Default | Extra
  | Privileges                      | Comment |
+-------+-------------+-------------------+------+-----+---------+--------------
--+---------------------------------+---------+
| id    | int(11)     | NULL              | NO   | PRI | NULL    | auto_incremen
t | select,insert,update,references |         |
| name  | varchar(20) | latin1_swedish_ci | YES  |     | NULL    |
  | select,insert,update,references |         |
| pwd   | varchar(20) | latin1_swedish_ci | YES  |     | NULL    |
  | select,insert,update,references |         |
+-------+-------------+-------------------+------+-----+---------+--------------
--+---------------------------------+---------+

 

从中可以看出我表中字段的编码却是latin1,所以,只要修改表中字段的编码就可以了,但是,我查了网上的资料,按着上面输入:

ALTER   TABLE   `userinfo`     CHANGE   `name`   `name`   VARCHAR(   20   )   CHARACTER   SET   gbk   NOT   NULL

 但是,却老是报

ERROR 1366 (HY000): Incorrect string value: '\xD0\xA1\xD2\xE4' for column 'name'
 at row 1

 这种错误,我也不清楚为什么?后面重新建了一个表:在建表时,就设定了表中字段的编码:

create table userInfo2(
id int not null auto_increment,
name varchar(20) ,
pwd varchar(20),
primary key(id)
)type=myisam character set gbk collate gbk_chinese_ci;

 然后向该表中插入数据都没有出现乱码现象,不管是在mySQL平台上,还是通过JSP页面提交的数据,而且,另一个JSP页面显示数据库中的信息也不是乱码。 

  

分享到:
评论

相关推荐

    jsp页面乱码处理

    本文将根据“jsp页面乱码处理”的标题与描述,深入解析解决JSP乱码问题的策略,并结合具体代码实例,帮助开发者彻底摆脱这一难题。 #### JSP乱码的根本原因 JSP页面的乱码通常源自字符编码不一致,即不同环节使用...

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

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

    解决JSP中文乱码问题

    解决 JSP 中文乱码问题 解决 JSP 中文乱码问题是一个很常见...解决 JSP 中文乱码问题需要从多方面入手,包括在 JSP 文件中指定编码方式,在 Java 文件中指定编码方式,在页面中指定编码方式,并确保编码方式的一致性。

    如何解决JSP页面显示乱码问题

    本文将针对JSP页面显示乱码、表单提交中文时出现乱码以及数据库连接时出现乱码这三个方面,提供详细的解决方案。 #### JSP页面显示乱码 **问题描述** 当在JSP页面中尝试显示中文时,可能会遇到乱码问题。例如,在...

    JSP中文乱码处理JSP中文乱码处理

    例如,如果你的JSP页面使用GBK,数据库也需要支持GBK。 总结来说,解决JSP中文乱码问题的关键在于:明确JSP文件的编码,正确设置HTTP请求的解码,以及统一响应内容和数据库的字符集。同时,要注意在每个可能产生...

    jsp 页面乱码问题

    总的来说,解决JSP页面乱码问题需要从多个层面进行排查和调整,包括但不限于JSP页面、HTTP头、服务器处理、数据库以及任何涉及文本数据的读写操作。每个环节都必须确保字符编码的一致性,这样才能避免乱码的出现。...

    解决jsp页面中文乱码问题

    在开发Web应用时,我们经常会遇到JSP页面中文乱码的问题。这主要涉及到字符编码的设置和处理。本文将深入探讨如何解决这个问题,确保在JSP页面中正确显示中文字符。 首先,我们需要理解字符编码的基本概念。在...

    有关JSP页面乱码问题的解决

    ### 有关JSP页面乱码问题的解决 在开发基于Java的应用系统时,尤其是在处理中文字符的情况下,JSP页面中的乱码问题是常见的技术难题之一。本文将深入探讨JSP页面中可能出现的乱码问题及其解决方案,并针对不同场景...

    jsp中文乱码问题解决

    jsp中文乱码问题解决 jsp中文乱码问题是jsp开发中常见的问题...jsp中文乱码问题可以通过修改jsp页面的编码方式、修改Tomcat的server.xml文件、编写Filter、使用jdk的native2ascii工具、配置数据库连接池等方法来解决。

    jsp乱码解决方案 本方案解决了jsp常见的乱码问题

    - **设置JSP页面编码**:在JSP页面头部添加`; charset=UTF-8" pageEncoding="UTF-8"%>`,确保页面使用统一的编码格式。 - **设置Tomcat服务器编码**:修改Tomcat配置文件中的`URIEncoding`属性为“UTF-8”,以确保...

    servlet与jsp中文乱码处理

    - **JSP页面头设置**:在JSP文件顶部添加`;charset=UTF-8" %>`,指定页面编码。 - **JSP标签乱码**:如果使用`<%= %>`或`<jsp:expression>`标签输出中文,需确保页面编码正确。 - **表单提交乱码**:对于POST请求...

    jsp页面乱码最简单的解决办法

    ### jsp页面乱码最简单的解决办法 在Web开发中,尤其是使用Java Server Pages (JSP)进行网页制作时,经常遇到的一个问题是字符编码问题,即所谓的“乱码”。这不仅影响用户体验,还可能导致数据处理错误。本文将...

    jsp eclipse乱码问题

    解决JSP页面在Eclipse中的乱码问题,关键是确保所有涉及的地方(包括JSP页面、IDE、服务器以及客户端)都使用相同的编码标准。通过上述步骤的操作,可以有效地避免乱码问题的发生,提升Web应用的质量和用户体验。

    JSP存到数据库乱码解决办法

    需要注意的是,为了避免各种字符集不匹配导致的问题,建议在整个项目中统一使用UTF-8编码,包括前端页面、后端代码以及数据库等所有环节。此外,对于一些特殊场景,如旧系统的兼容性问题,还需根据实际情况进行相应...

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

    1. **理解编码问题**:乱码通常发生在字符从一种编码转换到另一种编码时,例如从UTF-8编码的JSP页面转换到GBK编码的数据库。确保所有环节都使用相同的编码格式可以避免这种问题。 2. **JSP页面编码**:在JSP文件...

    Jsp乱码问题解决

    在JSP页面开发过程中,中文乱码是一个常见的问题。这个问题主要是由于服务器端和客户端(浏览器)的编码设置不一致导致的。 **原因分析:** 1. **服务器编码设置:** 不同的Web服务器或不同的JDK版本可能会采用...

    JSP中文乱码问题解决总结

    1. 字符集不一致:JSP页面、Servlet、HTML、CSS、JavaScript、数据库等环节如果使用的字符集不统一,容易导致中文字符在传输或解析过程中编码与解码不匹配,产生乱码。 2. 编辑器问题:开发工具的默认编码设置与...

Global site tag (gtag.js) - Google Analytics