mysqljsp网站开发解决中文乱码.docx

上传人:b****1 文档编号:2453982 上传时间:2023-05-03 格式:DOCX 页数:21 大小:900.07KB
下载 相关 举报
mysqljsp网站开发解决中文乱码.docx_第1页
第1页 / 共21页
mysqljsp网站开发解决中文乱码.docx_第2页
第2页 / 共21页
mysqljsp网站开发解决中文乱码.docx_第3页
第3页 / 共21页
mysqljsp网站开发解决中文乱码.docx_第4页
第4页 / 共21页
mysqljsp网站开发解决中文乱码.docx_第5页
第5页 / 共21页
mysqljsp网站开发解决中文乱码.docx_第6页
第6页 / 共21页
mysqljsp网站开发解决中文乱码.docx_第7页
第7页 / 共21页
mysqljsp网站开发解决中文乱码.docx_第8页
第8页 / 共21页
mysqljsp网站开发解决中文乱码.docx_第9页
第9页 / 共21页
mysqljsp网站开发解决中文乱码.docx_第10页
第10页 / 共21页
mysqljsp网站开发解决中文乱码.docx_第11页
第11页 / 共21页
mysqljsp网站开发解决中文乱码.docx_第12页
第12页 / 共21页
mysqljsp网站开发解决中文乱码.docx_第13页
第13页 / 共21页
mysqljsp网站开发解决中文乱码.docx_第14页
第14页 / 共21页
mysqljsp网站开发解决中文乱码.docx_第15页
第15页 / 共21页
mysqljsp网站开发解决中文乱码.docx_第16页
第16页 / 共21页
mysqljsp网站开发解决中文乱码.docx_第17页
第17页 / 共21页
mysqljsp网站开发解决中文乱码.docx_第18页
第18页 / 共21页
mysqljsp网站开发解决中文乱码.docx_第19页
第19页 / 共21页
mysqljsp网站开发解决中文乱码.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

mysqljsp网站开发解决中文乱码.docx

《mysqljsp网站开发解决中文乱码.docx》由会员分享,可在线阅读,更多相关《mysqljsp网站开发解决中文乱码.docx(21页珍藏版)》请在冰点文库上搜索。

mysqljsp网站开发解决中文乱码.docx

mysqljsp网站开发解决中文乱码

MySql/Jsp/网站开发中的中文乱码解决方案

这段时间在学习SSH在Myeclipse8.5+MySQL5.1下进行网站开发时遇到了中文乱码问题.烦恼了很久终于解决了…在这里和有同样问题的朋友们分享一下.希望能有帮助.总的思路就是将所有字符编码统一为GBK编码,开始的时候打算统一为utf-8,可是一直没有成功,饥不择食了.现在先用GBK,以后再研究utf-8的方法…具体步骤如下:

1)MySQL编码配置

1.为确保配置的成功.请在MySQL字符编码配置完成之后再create所需的数据库和表.

2.打开MySQL的配置向导

打开后如下图:

3.一直点next选择默认到达字符集选择界面,选中第三项:

manualselecteddefaultcharacterset/collation,然后在下拉框中选择gbk如下图:

4.选择之后点击next,填写密码并勾选enablerootaccessfromremotemachines.如下图

5.然后点击execute执行刚才的设置,运行成功之后到服务中重启MySQL服务即可,完成前面的步骤之后就可以建数据库.建表了

2)然后在MyEclipse中配置jsp页面的默认编码具体步骤如下:

1.选择菜单栏的:

windowpreferences,如下

2.点击MyEclipseFilesandEditorsJSP,如下图

在Encoding中选择ChineseNationStandard,也就是GB18030,因为它是GBK的子集而在选项中没有找到GBK就用它代替了.然后点击OK

3.新建webprojectsample…

4.此时新建webproject的jsp文件内都有<%@pagelanguage=”java”import=”java.util.*”pageEncoding=”GB18030”%>

3)然后是添加filter转换编码,具体步骤如下:

1.选中webproject,右键:

MyEclipseAddstrutscapabilities.如图

2.选择struts2.1,URLpattern选择/*如图

3.打开src目录下的struts.xml文件添加

4)测试网页到action的正确

1.在刚才工程的index.jsp中添加如下代码

2.在src下添加classTest,修改内容如下

3.在struts.xml文件中配置action如下

4.现在选中项目sample.右键runasMyEclipseServerApplication,在首页表单中输入中文.如你好..将在屏幕下方打印出:

你好

5.成功…

5)搭建Hibernate环境测试action到数据库

1.在MySQL中创建数据库hello,选择数据库hello,然后创建表user如图

2.选中sample.右键buildpathaddexternalachieves,找到下载到本机的mysqljdbc驱动

3.选中sample,右键:

MyEclipseaddHibernatecapabilities出现设置界面如图

选中enableHibernateAnnotationSupport.其他保持默认即可,点击next

4.接着next填写数据库相关信息如下图,点击Next

5.不选择创建SessionFactory,直接finish

6.Hibernate的配置就完成了.

6)将网页传输的中文保存到数据库

1.在src下添加classUser内容和数据库表结构相同,并添加annotation信息,如图

2.在hibernate.cfg.xml文件中添加实体映射

3.修改classTest中的execute方法如下

4.运行sample….runasMyEclipseServerApplication

5.在表单中输入你好.点击提交.console中打印出你好.查看数据库

7)总结:

在做这个文档的时候我也因为粗心弄错了好多次.有时候是字母打错了..有时候是驱动没添加…总之就是细心一点.不要随便放弃………希望能帮助遇到同样问题的朋友.因为我也是菜鸟阶段..所以没有去考虑别的解决方案.我照着我的文档试验了2次,都成功解决了乱码问题.我用的环境是:

MySQL5.1+MyEclipse8.5如果实在不能解决..那就把软件的版本和我统一试试吧…还要提一点就是.我在学习ssh的时候使用的是尚学堂/马士兵的视频教程.感觉收获非常大.建议和我同样的新手去电驴里面搜索一下.呵呵废话多了些…

Mysql中文乱码的解决方法

第一种方法,很精辟的总结:

经常更换虚拟主机,而各个服务商的MYSQL版本不同,当导入数据后,总会出现乱码等无法正常显示的问题,查了好多资料,总结出自己的一点技巧:

WINDOWS下导入应该这样:

使用MYSQL的命令。

在DOS命令下进入mysql的bin目录下,输入mysql-uroot-p密码数据库名称(要恢复的数据库),例如我们要把D盘的一个名称为test.sql的数据库恢复到本地的test2这个数据库,那么就这样:

mysql-uroot-p密码test2。

以前的国外主机用的Mysql是4.x系列的,感觉还比较好,都无论GBK和UTF-8都没有乱码,没想到新的主机的Mysql是5.0版本的,导入数据后,用Php读出来全是问号,乱码一片,记得我以前也曾经有过一次切换出现乱码的经验,原因肯定是Mysql版本之间的差异问题。

只好查资料,发现了一个解决方法,就是在mysql_connect后面加一句SETNAMESUTF8,即可使得UTF8的数据库消除乱码,对于GBK的数据库则使用SETNAMESGBK,代码如下:

$mysql_mylink=mysql_connect($mysql_host,$mysql_user,$mysql_pass);

mysql_query("SETNAMES'GBK'");

 

数据库字符集为utf-8

连接语句用这个

mysql_query("SETNAMES'UTF8'");

mysql_query("SETCHARACTERSETUTF8");

mysql_query("SETCHARACTER_SET_RESULTS=UTF8'");

还有个方法就是,如果你自己的机器的话,可以更改MYSQL字符集,一般在MYSQ4和MYSQL5这两个版本中有效。

第二个方法:

很不错的解说,可以试一下

mysql乱码处理总结:

(1)java中处理中文字符正常,在cmdclient中显示乱码是字符集的问题.

(2)字段长度设置够长,但插入中文字符时提示com.mysql.jdbc.MysqlDataTruncation:

Datatruncation:

Datatoolongforcolumn错误是字符集的问题.

(3)乱码问题归根到底是字符集的问题,那就从字符集设置方面考虑,不外乎下面几个方面:

server,client,database,connection,results.

-------------------------解决办法----------------------

(1)修改my.ini(MySQLServerInstanceConfiguration文件)

#CLIENTSECTION//客户端

[client]

port=3306

[mysql]

default-character-set=gbk

#SERVERSECTION  //服务端

[mysqld]

default-character-set=gbk

(2)修改data目录中相应数据库目录下的db.opt配置文件

default-character-set=gbk

default-collation=gbk_chinese_ci

(3)数据库连接串中指定字符集

URL=jdbc:

mysql:

//yourIP/college?

user=root&password=yourPassword&useUnicode=true&characterEncoding=gbk注:

在mysql4.1.0版要加useUnicode=true&characterEncoding=gbk如果是5.0版以上的,加不加都是没有关系的!

(4)在创建数据库时指定字符集

createdatabaseyourDBCHARACTERSETgbk;

(5)在dos命令上要设置

setnamesgbk

好了,经过检查上面四个方面的设置,应该OK了!

不会出现诸如com.mysql.jdbc.MysqlDataTruncation:

Datatruncation:

Datatoolongforcolumn等问题.

第三种方法,说有太复杂了,反到不知道怎么弄了,你试试,也许可以用得上

1.修改/etc/f文件,改成这样:

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

default-character-set=utf8

[mysql.server]

user=mysql

basedir=/var/lib

[mysqld_safe]

err-log=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

注意:

就是加入了一句default-character-set=utf8。

2./etc/init.d/mysqldrestart重新启动mysql;

3.打开phpmyadmin,选择lang为"Chinessimplifies(zh-utf-8)",选择"MySQL连接校对"为"utf8_general_ci"点“显示MySQL的运行信息”--“变量”,可以看到:

charactersetclientutf8utf8

charactersetconnectionutf8utf8

charactersetdatabaseutf8utf8

charactersetresultsutf8utf8

charactersetserverutf8utf8

charactersetsystemutf8utf8

collationconnectionutf8_general_ciutf8_general_ci

collationdatabaseutf8_general_ciutf8_general_ci

collationserverutf8_general_ciutf8_general_ci

从这里可以看到character全部变成utf8了。

有人要问,为什么都要改成utf8呢?

改成GB2312不行吗?

解释如下:

我也不想改成utf8,只是phpmyadmin2.6在mysql4.1的时候只会用utf8,连其他页面的charset也都是utf8,改成gb2312一定会乱码,我们只能凑phpmyadmin了。

只有在mysql3.23的时候,phpmyadmin才会多一个gb2312的页面charset,这时候是正常的。

将以前的mysql3的库文件导入mysql4.1的库

有两种情况:

一是从phpmyadmin上导入,这时候你要注意的是在选择库文件的页面左下脚有个“文件的字符集:

”,默认是utf8,要改成gb2312,否则导进去乱码;

二是在linux下导入,这时候你需要先在库文件的头部加一行:

SETNAMES'gb2312';注意最后也是;号,别漏了。

然后执行mysql-u用户名-p密码xxx.sql>库名

导入完成以后再用phpmyadmin打开看,里面的中文字就是正确的。

4.从mysql4.1里导出库文件

一.用phpmyadmin导出

导出倒是问题不大,如果phpmyadmin的浏览页面里显示的中文是正常的,那么导出肯定也是正常的

二.在linux上导出

如果用mysqldump导出出现了乱码也没有关系,可以运行iconv来转换一下iconv-c-fUTF-8-tGB2312库文件名>新的gb2312的库文件名。

综上所述,你要注意:

1。

尽量在需要导入的库文件的开头加入SETNAMES'gb2312';告诉mysql你要导入的是一个gb2312的文件;

2。

可能你需要这个:

SETNAMES'utf8';

在登陆到mysql后用,把character的一些默认参数改到utf8上,有时可以减少一些困扰,不过也不是必须的。

在mysql上使用:

SHOWVARIABLESLIKE'character_set_%';

用来查看当前的状态。

2.如果出现乱码也不要怕,一是你要注意留存原有的备份,二是用iconv来进行转化。

在正常使用之前注意做导入导出的测试,确保万无一失。

最后加一句:

www.quicklinux.org原创文章,转载请注明出处。

呵呵

邮件:

support@quicklinux.org

作者:

MySQL发布日期:

2005-12-14

我升级了MYSQL到4.1.2,phpmyadmin用的是2.6.2。

数据表里面有中文的字段中文都变成了乱码,导出数据也是乱码。

我用以前的2.5.7没有问题,想问一下,应该在phpmyadmin的那个文件里改哪个设置一下才能显示出来的是正常的中文字?

和字符相关的变量中这几个和sql很有关系:

character_set_client

character_set_connection

character_set_results

此外就是数据库中对相应字段设置的charactset,如果没有对字段设置,缺省是table的charactset,table也没有指定则缺省使用database的。

上面3个变量的作用是这样的,client表示客户端发送过来的字符集,results表示发送到客户端的字符集(这两个分开是因为发送过来和发送过去的不一定是同一个客户端),connection则在客户端和数据库起一个连接作用。

具体是这样:

比如我在mysql命令行设置client为gbk,connection为utf8,results为gbk,数据库为big5,

当我发送一个insert语句的时候,这个语句作为gbk代码,先转为utf8代码(connection),再转为big5(database)插入数据库。

而运行一个select语句的时候,从数据库得到的结果则相反的过程,由big5转为utf8,再转为gbk,你得到gbk的结果。

因此最主要的是让client和results和你使用的客户端一致。

比如你的网页是utf8编码,你就要设置这两个为utf8。

而在mysql命令行的时候,我用的是2000,需要设置为gbk

而我们用的setnamesXXX,实际上就是同时设置这3个变量为XXX。

在这样的情况下,我们可以把一个数据库中的不同表或不同字段设为不同的字符集,只要上面3个设置正确,就可以在数据库中同时使用不同的字符集。

注意要保证你的数据库中的字符已经使用了正确的字符集,比如如果一开始你设置错误,插入数据后,本身数据的编码就是不正确的,然后即使设置改回来,也不可能得到正确的显示了。

Jsp向Mysql表中添加中文文字乱码报错解决方案

1.首先设置页面charset=gb2312和<%request.setCharacterEncoding("gb2312");%>

保证要所用提交页面格式为gb2312,如果只操作这一步,在控制台打印提交数据有可以出现乱码情况,必须添加下面配置

2.创建Filter类,配置web.xml。

创建一个名为txtFilter类,实现Filter接口,用来设置页面代码格式

packagecom.rongtianxinxijishu.book.util;

importjava.io.IOException;

importjavax.servlet.Filter;

importjavax.servlet.FilterChain;

importjavax.servlet.FilterConfig;

importjavax.servlet.ServletException;

importjavax.servlet.ServletRequest;

importjavax.servlet.ServletResponse;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

publicclasstxtFiterimplementsFilter{

publicvoiddestroy(){

//TODOAuto-generatedmethodstub

}

publicvoiddoFilter(ServletRequestarg0,ServletResponsearg1,

FilterChainarg2)throwsIOException,ServletException{

//TODOAuto-generatedmethodstub

//主要步骤如下

HttpServletRequestreq=(HttpServletRequest)arg0;

HttpServletResponseres=(HttpServletResponse)arg1;

req.setCharacterEncoding("gb2312");

res.setCharacterEncoding("gb2312");

arg2.doFilter(req,res);

}

publicvoidinit(FilterConfigarg0)throwsServletException{

//TODOAuto-generatedmethodstub

}

}

txtFilter类创建好后,接着配置web.xml

txtfilter

com.rongtian.book.util.txtFiter

txtfilter

/*

配置完成后,重新部署,在控制台打印数据,发现中文没有乱码现象。

但在提交mysql后,mysql表中数据为乱码,需要接下来的操作。

3.在mysql里面配置下。

在你要修改的字段,选择gb2312,不要使用utf8,在mysql中,utf8会出现中文乱码。

在你的数据库中,执行如下代码。

 ALTERTABLE你的表名CHARACTERSETgb2312;

 在mysql的安装目录下你找到my.ini这个文件找到一行

 default-character-set-latinl;

 把latinl改成你的gb2312。

重启服务器删除缓存数据。

这样,中文数据从页面到数据库不会出现乱码情况。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2