注:开发IDE是eclilpse,本地开发环境是windows,测试环境是linux
项目之前是一位兄弟开发的,项目编码为GBK编码,半路做其它项目,我接接手,一次也没布署过测试环境。
我在本地一切开发好之后,测试没有问题,布到linux上就有乱码问题。
找了半天终于找到原因,测试服务器linux上是UTF-8编码,使用locale命令查看:
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
无奈,只得把项目中所有带GBK的地方全部改成UTF-8,这包括:
web.xml:
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>allowScriptTagRemoting</param-name >
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
所有的jsp页面:
<%@ page contentType="text/html;charset=UTF-8" language="java"%>
这些还罢了,最麻烦的是所有的类文件都要编译为UTF-8编码的,具体操作为:
在eclipse中选中一个JAVA文件,右击 -> properties -> Text file encoding 修改为UTF-8,
可这样一修改,JAVA文件中所有的中文字符全部变成了乱码,解决的办法为:
先把JAVA文件修改为GBK编码,Ctrl+A全部选择,再把JAVA文件修改为UTF-8编码,在类文件中Ctrl+A全选,删掉,再Ctrl+V粘贴刚才复制的内容。
好,大功告成!
可这只是修改了一个JAVA文件!什么??!!!! 对,你工程里有多少个JAVA文件都要这样修改,否则就会有以下后果
1、所有JAVA类中的中文注释都不可用(这个在某种情况下可以舍弃)2
2、所有JAVA类中中文消息(存储在request中供在JSP中显示的)全部为乱码,这样JSP中不管如何设置,始终是乱码!!
于是,一项浩大的编码改造工程开始了。。。。。
分享到:
相关推荐
Linux与UNIX系统可执行文件兼容性的研究与实现.pdf
weblogic 10 在 UNIX 下部署, 中文乱码问题的解决
通过java socket和lettuce框架基于UNIX域套接(UNIX Domain Socket)协议实现redis连接和操作,使用redis.sock文件
目标:为Windows操作系统建立一个兼容Unix命令的命令接口,实现命令包括ls,cat,cp,mv,md,rd,cd,sort,more命令。 环境:使用CodeBlock开发(g++编译) 效果:尚未发现BUG 优点:代码可读性高、比较精简、错误处理...
unix2dos 用来实现 DOS <=> UNIX text file 转换 。 功能是将DOS/MAC下的文件转化为UNIX的文本文件格式.
1970,UNiplexed Information and Computing System,缩写为UNICS==>UNIX,可以认为这一年是Unix诞生的元年 1971,V1 1973,V4 1975,BSD(Berkeley Software Distribution)UNIX 图灵 1975:Bill Gates、Paul Allen 1991...
Unix环境上的java编译与运行.
GNU编码标准,里面有makefile,命令的标准说明。对于linux/unix下编程很有帮助
UNIX插头问题UNIX插头问题UNIX插头问题UNIX插头问题UNIX插头问题UNIX插头问题UNIX插头问题UNIX插头问题
个人收集资料, window 和UNIX JAVA 项目部署
2、界面的实现:在实现这个文件系统时使用了两种方案,一种是直接在java控制台来进行输入输出,因为原本想着UNIX文件系统原本也是使用的命令行语句,所以在控制台上实现也很接近。后来在老师的建议下又将整个程序...
在开发的过程中,要善于利用JAVA面向对象编程的优势,与Linux/Unix命令或Shell脚本的优势,并将二者相结合。
Unix域协议:概述 16.1 概述 175 16.2 用途 176 16.3 性能 177 16.4 编码举例 177 16.5 小结 179
junixsocket junixsocket是一个Java / JNI库,允许使用Java的(AF_UNIX套接字)。为什么很酷junixsocket是一个小型的模块化库。 仅安装您需要的内容。 与其他实现相反, junixsocket扩展了Java Sockets API( java...
unix-stream, 将 Java 8流转换为类似管道的Unix 什么是 UnixStream? UnixStream是 Java 8流API的扩展,用于处理Unix路径的数据管道。 它提供了一组模拟Unix命令( 等等)的组件。特性100%与 Java 8流兼容直观。灵
Unix域协议:实现 17.1 概述 180 17.2 代码介绍 180 17.3 Unix domain和protosw结构 181 17.4 Unix域插口地址结构 182 17.5 Unix域协议控制块 183 17.6 uipc_usrreq函数 185 17.7 PRU_ATTACH请求和unp_attach函数 ...
LINUX与UNIX SHELL编程指南
主要为大家详细介绍了Java时间转换成unix时间戳的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
Linux与Unix shell编程指南(完整高清版)Linux与Unix shell编程指南(完整高清版)Linux与Unix shell编程指南(完整高清版)Linux与Unix shell编程指南(完整高清版)Linux与Unix shell编程指南(完整高清版)Linux...