在windows下开发的JavaWeb项目,运行测试没有任何问题,后来部署到阿里云租来的linux服务器上,结果遇到了各种问题,解决也花费了不少时间,还是来总结一下。
1、secureCRT的中文乱码
我用的终端是secureCRT,发现tomcat日志不停的打印中文乱码,这里要先修改终端软件的编码,我这里就是修改secureCRT的编码,打开“选项”--》“会话选项”,修改如下图:
在这里将字符编码变为utf8,字体可以选择中文的任意字体。这个改完后,tomcat的打印乱码问题就解决了。
2、关于Mysql的大小写问题
web端操作数据库时报错,发现之前mysql安装好后没有进行相关的配置,首先遇到的问题是数据库大小写敏感的问题,这是因为windows下安装mysql后,会有默认的配置,而linux系统则没有,需要自己添加。
修改my.cnf文件:vi /etc/my.cnf
在[mysqld]下边加入一行 lower_case_table_names=1
如果项目中hibernate.hbm2ddl.auto"设置为update等属性的话可以看到新建立的数据表都是小写了。
3、关于Mysql含有中文的sql语句无法查询的问题
在shell输入mysql登陆后: mysql>show variables like '%character%';回车后显示:
+----------------------+---------------------
| Variable_name | Value
+-----------------------+---------------------
| character_set_client | latin1
| character_set_connection | latin1
| character_set_database | latin1
| character_set_filesystem | binary
| character_set_results | latin1
| character_set_server | latin1
| character_set_system | utf8
| character_sets_dir | /usr/share/mysql/charsets/
+---------------------+----------------------
可以看到编码都是latin1,这里仍然进入my.cnf修改 vi /etc/my.cnf
找到 default-character-set=latin1 将latin1改为utf8,然后在[client]和[mysqld]下面加入一行:
init_connect='SET NAMES utf8'
然后再次mysql>show variables like '%character%';就可以看到相应的latin1换成utf8了。之后mysql的中文乱码解决。
4、关于文件系统乱码
这里要说明的是,ftp查看linux服务器上的文件总会是乱码,这是因为windows和linux的文件编码不同,在命令行下输出文件夹下的文件,可以看到都是正常的中文,这个不是问题,ftp都存在。