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

本文介绍如何解决YUIAnt.jar在Windows环境下压缩含有中文的JS文件时出现乱码的问题。通过修改源代码使用UTF-8编码,确保国际化项目正确压缩。
之前看了javaeye上的一个帖子,帖子地址
[quote]http://www.iteye.com/topic/368724[/quote]
文中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编码,下载的朋友注意一下
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值