今天遇到一个很诡异的问题,同一样的代码和同一个数据文件,在eclipse或者其它ide中能正常运行,为什么在控制台确不能正确的运行?
代码很简单,就是从一个数据文件中读取一定的行数,然后处理这些行
代码如下
public static void main(String[] args) throws Exception {
final String SEPERATOR = "\" \"";
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("d:/test11.log")));
String line = null;
int c = 0;
while ((line = reader.readLine()) != null && c < 5000) {
String[] infos = line.split(SEPERATOR);
if (infos.length != 13) {
System.out.println("infos.length size = " + infos.length);
throw new Exception(String.format("报错行数(%d,%s)\n", c, line));
}
c++;
}
}
这个数据文件是UTF-8的编码格式,其中有一些数据中存在诸如"?"之类的乱码。此时eclipse中工程的编码设置为UTF-8,程序能够正常的运行,
但是诡异的事情在我将工程的编码设置为gbk后就发生了,代码不能正常运行了。难道代码在eclipse中运行时,eclipse会自动拦截并用当前工程的编码
过滤文件的IO读写吗?
后来将代码改成如下:
public static void main(String[] args) throws Exception {
final String SEPERATOR = "\" \"";
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("d:/test11.log"),"UTF-8"));
String line = null;
String other=null;
int c = 0;
while ((line = reader.readLine()) != null && c < 5000) {
other=new String(line.getBytes(),"UTF-8");
String[] infos = other.split(SEPERATOR);
if (infos.length != 13) {
System.out.println("infos.length size = " + infos.length);
throw new Exception(String.format("报错行数(%d,%s)\n", c, line));
}
c++;
}
}
给输入流加上UTF-8编码后,程序在ide中和控制台都能正常运行了
此时,无论给工程的编码属性配置成utf-8或者gbk都没有问题了,最让人费解的是elipse真的对IO流过滤了吗?
有谁知道这个问题请不吝赐教
分享到:
相关推荐
在eclipse中编写的Java代码,运用了Java的图形界面工具。执行后会跳出窗口显示为棋盘,可以通过鼠标下棋,会判断输赢,也可以重新开始等等
Spark源代码在Eclipse中的部署、编译、运行.docSpark源代码在Eclipse中的部署、编译、运行.docSpark源代码在Eclipse中的部署、编译、运行.docSpark源代码在Eclipse中的部署、编译、运行.doc
Tomcat8源码,依赖添加完毕,可以在eclipse中直接运行,分析tomcat运转流程。 如果报错,拷贝conf和webapps文件夹到output/build目录下即可。
tomcat源代码工程,下载后可在eclipse直接导入和运行,可以好好阅读Tomcat源代码了解其中涉及的奥妙。
团队中的开发工具是多种多样的,比如...附件中包含了eclipse和idea的代码格式文件,导入之后可以解决因格式化造成的大面积冲突问题。 快捷键科普: eclipse格式化快捷键:Ctrl+shift+F idea格式化快捷键:Ctrl+alt+L
本文详细介绍了Eclipse控制台展示字符的超出长度的问题。
eclipse怎么运行需要从键盘输入数据的Java程序
ATM代码 简单易于上手 方便运行
导入eclipse 直接运行的Launcher源码。
希望在eclipse当中运行tomcat的同道中人,可以下载下来这个,我找了好几次终于凑齐了,里面有tomcat中关联的jar包。。。
> 一款可以在手机中打开logcat控制台 方便快捷 支持内容搜索 支持自定义标题 支持根据tag筛选 支持根据log级别显示 如何引入 Android Studio 引入 第1步 将JitPack存储库添加到您的构建文件 将其添加到存储库末尾...
利用eclipse调试JDK自带的applets程序Animator,由于示例文件example1.html需要将参数传递到Animator中,因此要对eclipse作一些设置。经过摸索,找到一种不需web project的方式。
window下eclipse中运行mapreduce程序所需要的Hadoop全部jar包
本文档详细讲述怎么样使做完的java工程 swt rcp swing 等脱离java运行
Eclipse运行,员工管理系统。增删改查,适合大一大二新生使用,可以轻易变形成学生管理系统
eclipse导出可运行的jar文件,楼主自己实践后截的图,不仅只包含jdk还可以包含第三方内库比如spring
Eclipse实现安卓疯狂闯关鸟的小游戏,简单易运行,详细注释,完整源代码 Eclipse实现安卓疯狂闯关鸟的小游戏,简单易运行,详细注释,完整源代码 Eclipse实现安卓疯狂闯关鸟的小游戏,简单易运行,详细注释,完整源...
在Eclipse中导入dtd和xsd文件,使XML自动提示 DTD 类型约束文件 1. Window->Preferences->XML->XML Catalog->User Specified Entries窗口中,选择Add 按纽 2.在Add XML Catalog Entry 对话框中选择或输入以下...
eclipse RCP学习项目源码&扩展控制台插件for eclipse3.5