转载请注明原文地址: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步,基本上统一了项目涉及的所有关于编码的地方,中文参数值乱码的问题就解决啦~