在Java解析中国文字显示怪异的行为(parsing chinese characters in j

2019-10-18 21:10发布

我有这具有中国字符串某些领域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,我的输出犯规显示怪异字符。

但是,有两个问题:

  1. 输出被表示串,其是从输入完全不同! 我的意思是,即使不这样做就从我的代码任何字符串任何处理IM,输出没有输入CSV的任何领域找到。

例如,我的输入具有中国字符的字符串:陈真珍上场数8.但我的输出HTML有类似:闄堢湡鐝其对应于输入字段数8。

  1. 如u可以看到,有一个问号,从在输出闄堢湡鐝的unicode即更换炭

我请你好心帮我在这里跟踪在哪里可以是一个错误......

PS:AISO,我检查了谷歌翻译,发现,输入字符串陈真珍意味着一些陈臻臻

其对应的输出字符串闄堢湡鐝意味着什么叫做Yaobaoyujue所以在意义差异以及字符也表示。

Answer 1:

该输出意味着你的输入不是在GB18030编码。

另外:请检查并仔细检查你如何看待你的文件:什么编码不打开的文件,特别是输入文件的程序使用。 通常文本文件(和CSV文件)不来连接到他们的元数据,显示它们的编码,所以编辑有猜测和猜测很容易被错误的。



Answer 2:

请保持读取/写入中国的字符时,enconding是一致的。 由于一些中国人性格可能不是由所有的编码,如GBK,GB18030等代表

你可以试试使用UTF-8 enconding来处理中国人的性格。



文章来源: parsing chinese characters in java showing weird behaviour