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

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

    本学期初次接触《J2EE技术》这门课程,虽然本身的方向并非Java Web方向,可是没办法,仍是要花费不少的时间去探索。固然,首先遇到的就是各类恶心的乱码问题,字母系语言的程序员应该不会遭遇这些迷惑吧!      最开始的是jsp文件是UTF-8编码的,然而确使用jsp默认编码iso8859-1,在浏览器中打开乱码!因而,按照之前的经验在jsp文件中加入<meta charset=utf-8 />”结果一点用也没有。原来,页面编码的决定权在“pageEncoding="UTF-8"手上,那个”<meta charset=utf-8 />”写与没写都是同样的。    java

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

response.setContentType("text/html;charset=UTF-8");request.setCharacterEncoding("UTF-8"); 程序员

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

<Connector port="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");的做用 apache

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

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

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

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

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

create database tianhuifang default character set utf8 collate utf8_general_ci;

create table iuser(id int primary key auto_increment,name varchar(50) not null,password varchar(50) not null, email varchar(50) unique not null) default charset utf8;

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

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

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

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

相关文章
相关标签/搜索