转载于:http://jiarry.bokee.com/2618615.html

 

eclipse编译的中文乱码问题

JiarryLee in Beijing

我使用的平台是windows与linux.
web server是jdk1.5+tomcat 5.0.28+apache2.4
数据库为mysql 4.*

IDE及插件:
eclipse SDK:windows下载eclipse-SDK-3.0.1-win32.zip,linux下载eclipse-SDK-3.1-linux-gtk.tar.gz压缩包.
Tomcat支持插件:tomcatPluginV3.zip
lomboz.301.zip
emf-sdo-runtime-2.0.0.zip


JSP,servlet显示,请求,输出中英文均很正常,我使用的字符集是GBK。

但是问题出在eclipse上了,用eclipse新建项目,总会在项目里面一个work文件夹。
里面用来存放临时编译的jsp等文件。
比如我将项目是tomcat/webapps/bbs,而用eclipse创建该项目后,bbs下自动多出一个work文件夹。

然后bbs文件夹下的,jsp,以及java文件都能用eclipse正确打开,也能正确显示中文。查看jsp的servlet源码,也是能正确显示中文的。
可是,work文件夹下也有个编译好的java以及class文件,就像tomcat下work/Catalina/localhost里的一样。
用eclipse打开work下的java文件,看见里面的中文全是乱码。不知这是什么原因,而用UltraEdit打开就没有事。
查看项目属性,Default encoding for text files里,从容器里继承的编码是GBK,而如果改成utf-8,打开work下的java文件就能正确显示中文了,
可是,这样一来,保存的jsp文件就不能正确显示中文了。(work下的文件编码是UTF-8的)

所以Default encoding for text files还得改成inherit from container(GBK)。

我想请教的是
1,如何不让eclipse在项目下自动创建一个work文件夹,或者不让项目下的work文件来存放、编译java和class文件。
因为tomcat下work/Catalina/localhost下项目里已经是有了这种编译的了。让tomcat来解析好了,那样中文就绝对不会有错了。

eclipse项目work下的java,class文件有时编译时显示乱码,而如果删除掉work下文件夹,取消eclipse的项目。
再用tomcat运行就一点错也没有。

2,当然了,如果能让eclipse项目下的work文件夹,正确显示中文也是个不错的方法。关键是那样的编码是utf-8的。
而我的项目全是GBK的,不能换成UTF-8。


我也删除了eclipse下workspace下的.metadata文件,仍然不管用。


http://www.cnstu.net/3887/3887373.htm

这儿有个网友遇到的问题与我的很相似。问题可能是eclipse的项目下的文件是utf-8来编译的,
而如何文件是GBK,GB2312,GB18030等等,编译时有可能出现乱码。

 

解决方法,发现一个解决方法。但eclipse项目下work文件下的.java文件正确显示中文没有解决。


每次eclipse创建项目时,自动更新server.xml文件,或者在tomcat/conf/Catalina/localhost下新建一个
项目名称.xml的文件。
其中这里指定了workDir,即工作路径,这样所有文件均编译到项目目录的work文件下。比如:
<Context path="/vote" reloadable="true" docBase="E:/Tomcat5/webapps/vote" />
<!--Context path="/vote" reloadable="true" docBase="E:/Tomcat5/webapps/vote" workDir="E:/Tomcat5/webapps/vote/work" /-->
这时,将workDir=路径 一段删除即可。
这样,项目就会在tomcat/work/Catalina/localhost/项目名称/下了。
这样的话,eclipse也就不会报中文显示的错了,由于tomcat按utf-8编译servlet,jsp,所以中文没有乱码。
而在eclipse里,往往继承我们项目的GBK编码,所以当改变一个文件,eclipse自动编译时,会按GBK来编译,
这时,有时会由于一个空格,或者单双引号,会导致少个双引号之类的,因而报错。而work下的文件其实不用再经过eclipse再编译了,
直接用tomcat编译就很好了,所以直接在server.xml里设,或者改tomcat/conf/Catalina/localhost的.xml文件都可以啦。
反正workDir别指向用eclipse创建的项目work下就行了。
删除wordDir会自动指向tomcat默认的路径,如E:/Tomcat5/work/Catalina/localhost下。


如果在eclipse下没有项目的work文件夹,或者项目的工作路径不指向该work下,那样就不会出错啦。
我觉得大概是这个原因了,hoho,反正现在我的没有任何问题了。

其实最好在某一个项目建立时,先在server.xml文件中加上一行,再用eclipse创建项目就没事啦。
<Context path="/vote" reloadable="true" docBase="E:/Tomcat5/webapps/vote" />(vote及E:/Tomcat5/webapps/vote根椐自己的路径改变)

hoho,终于搞掂了,松口气啊。有时候小问题也很麻烦的。

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:1 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐