我有一个csv文件,其中有一些字段包含中文字符串。 不幸的是我不知道这个输入csv文件的编码是什么。 我正在尝试读取此输入csv并使用其中的选择性字段,我正在制作一个html和另一个csv文件作为输出。
在阅读csv输入时,我尝试了列表http://docs.oracle.com/javase/7/docs/technotes/guides/intl/encoding.doc.html中的所有编码,其描述中提到了中文。 并发现如果我使用
InputStreamReader read = new InputStreamReader(filepath,"GB18030");
用于阅读csv 和
OutputStreamWriter osW=new OutputStreamWriter(objBufferedOutputStream,"UTF-16");
对于编写html和csv,我的输出不会显示奇怪的字符。
但是,有两个问题:
例如,我的输入在字段编号8上有一个中文字符串:陈真珍。 但我的输出html有类似的东西:闄堢湡鐝 对应于输入字段编号8.
我请你帮助我追踪这里可能出错的地方......
PS:Aiso,我检查了谷歌的翻译,发现,输入字符串陈真珍意味着一些陈真珍及其对应的输出字符串闄堢湡鐝 表示称为Yaobaoyujue的东西 所以人物的意义和表现也有差异。
答案 0 :(得分:2)
该输出表示您的输入不是GB18030编码。
另外:请检查并仔细检查您查看文件的方式:程序使用哪种编码打开文件,特别是输入文件。通常文本文件(和CSV文件)不附带显示其编码的元数据,因此编辑必须猜测并且猜测很容易出错。
答案 1 :(得分:0)
在阅读/书写汉字时请保持一致。由于某些中文字符可能无法用所有编码表示,例如GBK, GB18030等。
您可以尝试使用 UTF-8 来处理中文字符。