JavaWeb应用项目中文乱码的解决

 转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6383542.html

     在把web项目成功部署到云主机后,通过浏览器成功地访问到了你的网站,却发现页面里本该由servlet传过来的中文参数值显示成了 ???  乱码。这是什么原因呢?

     这可能是由于你的web项目所在系统的字符编码、tomcat的字符编码、开发项目时myeclipse的字符编码以及建立数据库时的编码不一致造成的,解决方法就是逐一设置。

     一:myeclipse设置项目编码

     点击windows,Preference,点击左侧General,workspace。设置编码为UFT8。

   

    二:项目中设置过滤器,设置request和response传递的参数为UTF8编码。

   

    别忘了在web.xml中配置这个filter哦。

    三:为云ubuntu设置中文编码

    首先,安装简体中文环境

sudo apt-get install language-selector language-env language-pack-zh-hans

    然后,更新locale

dpkg-reconfigure locales

    编辑本地locale文件。注意,要先获取root权限:

sudo passwd root

    输入密码后,解开启了root权限。然后输入

su

    输入刚才的密码,进入root权限。为locale文件赋予777权限:

chmod 777 /etc/default/locale

    然后,编辑该文件:

sudo vi /etc/default/locale

    按I进入编辑模式,移动光标到最下,在末尾添加

LANG="zh_CN.UTF-8"
LANGUAGE="zh_CN:zh"

    按Esc退出编辑模式,输入  :wq  保存并退出文档。

    然后重启你的云主机ubuntu,使配置生效。若你打开shell窗口就会发现有中文了,说明配置成功。

    四:配置mysql字符编码

    1:修改mysql配置文件

vi /etc/mysql/mysql.conf.d/mysqld.cnf

    找到  [mysqld]  节点,在其下面追加

character-set-server=utf8
collation-server=utf8_general_ci

    重启mysql,使配置生效

/etc/init.d/mysql restart

    2:设置所用数据库字符编码

mysql> alter database 你的数据库名 character set utf8;

     当然,你也可以进入所使用的数据库,一项项设置:

mysql>use 数据库名;
mysql> SET character_set_client=utf8;
mysql> SET character_set_connection = utf8;
mysql> SET character_set_database = utf8;
mysql> SET character_set_results = utf8;
mysql> SET character_set_server = utf8;
mysql> SET collation_connection = utf8;
mysql> SET collation_database = utf8;
mysql> SET collation_server = utf8;

    五:配置tomcat编码

    用  su  命令登录root权限,cd到tomcat的conf目录下。然后为server.xml文件赋予777权限。

chmod 777 server.xml

    打开server.xml:

vi server.xml

    按I进入编辑模式,找到<Connector   >结点,添加 URIEncoding="UTF-8"useBodyEncodingForURI="true" 两行,如下图:

    在下面,还有一处<Connector    >,添加 URIEncoding="UTF-8",如下图:

    按Esc退出编辑模式,输入  :wq   保存并退出。

    重启tomcat使配置生效。

经过以上5步,基本上统一了项目涉及的所有关于编码的地方,中文参数值乱码的问题就解决啦~

  

   

原文地址:https://www.cnblogs.com/ygj0930/p/6383542.html