焦炭

2011-07-03 40 views
1

我有一个问题....焦炭

我做了一个Java程序,执行以下操作:

BufferedReader input = new BufferedReader(new FileReader("test.csv")); 
String line = input.readLine(); 
int lenghtOfLine=line.length(); 
char[] lineIndex=new char[lenghtOfLine]; 
lineIndex=line.toCharArray(); 

现在,我做了一些检查,在一个for循环这样我们if(lineIndex[i]=='|') or 'M'并以同样的方式一些其他检查 ...

的问题是,allthought程序运行在Windows 7,Vista中,Windows XP(英语和希腊语) 正确的,当我尝试运行它 在Windows vista( 德国)它似乎像检查lineIndex[i]=='|'总是虚假** 为什么会发生这种情况? test.csv文件是一样的..我相信'|'存在于每一行中。

unicode或有什么问题?

我怎样才能使这个程序运行在各种语言

的test.csv文件总是有些从网上

我为我的英语对不起下载。 在此先感谢..

+0

您可以用'FileReader'的'getEncoding'方法,看看你在两台机器得到什么? –

回答

2

该API指定FileReader将假定它运行的机器的默认字符编码。

如果你知道的CSV是UTF-8编码,你可以尝试:

FileInputStream fis = new FileInputStream("test.csv"); 
InputStreamReader isr = new InputStreamReader(fis, "UTF-8"); 
BufferedReader input = new BufferedReader(isr); 
+0

当我这样做,该程序停止在Windows XP,Vista(希腊)正常工作..有没有办法知道csv文件的编码? 我可以使用,而不是'|' '\ u007c'有什么区别吗? – M1llaaN0

+0

使用cygwin与工具“文件”来检查文件类型和编码和“dos2unix”&“unix2dos”以在行结束编码等之间切换。当你用stackoverflow为你提供使用cygwin重新编码文本文件的答案时,你不喜欢它吗? http://stackoverflow.com/questions/64860/best-way-to-convert-text-files-between-character-sets –

+0

嗨M1llaaN0,你能解释“停止正常工作”的意思吗?你有没有试过转换成UTF-8格式(使用类似NotePad ++的东西)? –