使用YUIAnt.jar和yuicompressor-2.4.2.jar压缩js乱码问题

之前看了javaeye上的一个帖子,帖子地址
引用
http://www.iteye.com/topic/368724

文中YUIAnt.jar  下载地址 http://www.ubik-ingenierie.com/miscellanous/YUIAnt/ 需要直接访问不到,需要用代理

该文是使用YUIAnt.jar和yuicompressor-2.4.2.jar两个jar包来在ant脚本中压缩js和css,但是在使用中发现了一个问题就是在windows下压缩有中文的js的时候会出现乱码,下面我说一下解决的方法:
在YUIAnt.jar包中类com.yahoo.platform.yui.compressor.YUICompressTask反编译出来的源代码中有192行和196行分别是:
/* 192*/                reader = new BufferedReader(new FileReader(tempFile));
/* 196*/                reader = new BufferedReader(new FileReader(inputFile));

只需要吧这两行代码更改成:
/* 192 */                reader = new InputStreamReader(new FileInputStream(tempFile),charset);
/* 196 */                reader = new InputStreamReader(new FileInputStream(inputFile),charset);

其中变量String变量charset = "UTF-8"。
造成这个bug的原因是FileReader不支持指定文件的字符编码,是当前系统的默认编码来解码文件的输入字节流,windows的默认编码一般都是GBK(大家都是中国人,装的当然都是中文的系统了,可以使用System.getProperty("file.encoding");方法得到),但是一般大家写java程序的人为了国际化的要求,源代码使用的都是UTF-8的编码,使用GBK的reader去读UTF-8编码当然当然会出现乱码,改为可以指定字符串编码的InputStreamReader就可以了。

我把该过之后的jar包名字换成了YUIAnt-0.1.jar,需要的朋友可以下载,其中我强制了输入输出都使用UTF-8编码,下载的朋友注意一下

你可能感兴趣的:(windows,ant,css,脚本,yui)