首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

J2EE初步,第一次接触的那些乱码有关问题

2013-04-05 
J2EE初步,第一次接触的那些乱码问题J2EE初步,第一次接触的那些乱码问题本学期初次接触《J2EE技术》这门课程,

J2EE初步,第一次接触的那些乱码问题

J2EE初步,第一次接触的那些乱码问题

本学期初次接触《J2EE技术》这门课程,虽然自己的方向并不是JavaWeb方向,但是没办法,还是要花费很多的时间去探索。当然,首先遇到的就是各种恶心的乱码问题,字母系语言的程序员应该不会遭遇这些迷惑吧!

最开始的是jsp文件是UTF-8编码的,然而确使用jsp默认编码iso8859-1,在浏览器中打开乱码!于是,按照以前的经验在jsp文件中加入”<metacharset=utf-8/>”结果一点用也没有。原来,页面编码的决定权在“pageEncoding="UTF-8"”手上,那个”<metacharset=utf-8/>”写与没写都是一样的。

解决初步问题之后,再次遭遇的乱码问题是通过jsp表单向Servlet提交数据;起初全是使用英文测试没在意,结果使用中文之后,居然又再次出现恶心的乱码。然后,在Servlet修改至下面的两段代码:

response.setContentType("text/html;charset=UTF-8");

request.setCharacterEncoding("UTF-8");

自以为问题解决之后,赶紧测试一下,结果居然没有一点儿的变化。谷歌、必应、百度之,原来要改服务器配置文件。以我的修改为例:进入服务器安装目录:apache-tomcat-7.0.37/conf管理员权限编辑server.xml文件,修改内容如下:

<Connectorport="8080"maxHttpHeaderSize="8192"maxThreads="150"minSpareThreads="25"maxSpareThreads="75"enableLookups="false"redirectPort="8443"acceptCount="100"connectionTimeout="20000"disableUploadTimeout="true"URIEncoding="UTF-8"/>

即使是修改过了,可是还是没有见到自己想见的中文,看到的又是乱码字符。后来,貌似又可以了;然后又不在意间又出现乱码。这让我纠结了好长的一段时间。后来,才意识到自己没有重启服务器,改过的配置文件没有马上生效;还有就是我居然将response.setContentType("text/html;charset=UTF-8");request.setCharacterEncoding("UTF-8");这两行代码写到request.get...()之后,没有发挥request.setCharacterEncoding("UTF-8");的作用。

至此,在j2ee方面的乱码问题算是解决啦!下面遭遇的是mysql数据库链接乱码悲剧。

学习《数据库系统概论》时老师选用的数据库是Oralce。这个大家伙,貌似那段时间数据库基础知识倒霉有学扎实,倒是如何安装Oracle和PL/SQL软件花费了一个学期。到Oracle好不容易安装好了,数据库课程也结束了。myql之前也接触过,但是没有这次这么细致。

说明下,我做的小网站页面使用的默认编码是UTF-8。首先,我在Mysql数据库下建立数据库和表,在Mysql终端插入数据,然后select*from居然出现乱码,没在意;然后用JDBC访问读取数据库内容。丫的,居然还是乱码。然后再调用Java相关方面的类进行转码。嗯,显示中文了!可是,这样就不自在了,明明可以直接在数据库中读取内容,然后进行增、删、改、查的操作即可,为啥非要进行转码操作呢?这不是浪费资源么?要是有数百万的数据,光转码操作都要浪费多少资源呀!查找了许多的资料,然后更改Mysql数据库配置,改配置文件,设置各种默认编码为UTF-8,后来,一切正常。

后来,一切貌似可以说是正常啦!可是,我又忽视了一点,我所有的测试都是在本机进行的。当我把我做的上传到远程服务器时,又出现和上述一样的数据库乱码。但是,当我欲修改数据库配置文件时,才发现自己的权限不够。难道,为了自己的网站去让管理员更改数据库配置?那会不会影响别人的数据库使用呢?最后,自己才意识到数据库编码在数据库创建的时候就要开始注意了。

根据查询的网上资料,要使用UTF-8编码,数据库应该类似于以下的创建方式:

createdatabase tianhuifang defaultcharactersetutf8collate utf8_general_ci;

createtableiuser(idintprimary key auto_increment,namevarchar(50)notnull,passwordvarchar(50)notnull,emailvarchar(50)uniquenotnull)defaultcharset utf8;

这时,我才意识到自己具备一般程序员不应该具备的坏习惯:遇到困惑,只想着去改变别人的东西,或是埋怨别人的缺陷;却不愿从自己的源码开始,尝试去适应。

这样创建的数据库,根本不用去考虑mysql默认的编码问题。当然,到此也不是最后就不再出现乱码了。在使用JDBC链接mysql时,别忘了?characterEncoding=UTF-8这段内容,也就是如下的形式:

DriverManager.getConnection("jdbc:mysql://localhost:3306/ijavame?characterEncoding=UTF-8","root","***");

终于,到最后遇到的困难几乎都和乱码无关了!最后,告诫自己:程序员,不要埋怨;有时候,埋怨就是你技术不行,实力不够。

热点排行