java使用gbk编码读取utf-8的js文件吃掉回车问题

我是彻底的标题党,标题也表达不清楚。

具体情况:

网页执行js报错,因为服务器是一个自己写的js代理,所以比较好查,在firefox里发现js并成一行了,如下:

 

TB.add('mod~global', function() {
        // 鍒濆鍖栧嚱鏁伴槦鍒?        runItems = {} 
    };
});

乱码是因为我读取js时使用了fileReader,编码默认是gbk,源文件如下,为utf-8编码:

 

 

TB.add('mod~global', function() {
        // 初始化函数队列
        runItems = {}
    };
});

我就奇怪,为什么gbk编码会把换行“吞掉”,但是奇怪的是其他类似的地方都正常,网页执行正常,所以我一直也没把编码改了,直到前两天。

 

 

由于FileReader无法传encoding参数进去,所以我改成了InputStreamReader,我测试了gbk和utf-8编码,输出结果和网页一致,gbk会并成一行。

我很好奇,所以在源文件里又加了类似的注释,如下:

TB.add('mod~global', function() {
        // 初始化函数队列
        runItems = {}
		// aaaaaaaaaa
		alert('a');
		// aaaaaaaaaa
		alert('a');
		// aaaaaaaaaa
		alert('a');
		// aaaaaaaaaa
		alert('a');
    };
});

在gbk编码下的执行结果:

TB.add('mod~global', function() {
        // 鍒濆鍖栧嚱鏁伴槦鍒?        runItems = {}
		// aaaaaaaaaa
		alert('a');
		// aaaaaaaaaa
		alert('a');
		// aaaaaaaaaa
		alert('a');
		// aaaaaaaaaa
		alert('a');
    };
});

也仅有第一处注释出现问题,纳闷了。

由于是代理服务器,编码无法写死,貌似我只能尽可能地去兼容这种问题了。。只能在服务器上开个配置处理掉了。。

ps:怎么变成牢骚了。。。

 

posted @ 2010-12-05 20:56  雪霁霜飞  阅读(810)  评论(0编辑  收藏  举报