在java中解析汉字显示出奇怪的行为
我有一个csv文件,其中有些字段有中文字符串。 不幸的是,我不知道这个输入csv文件的编码是什么。 我试图读取这个输入csv,并使用其中的选择性字段,我制作了一个html和另一个csv文件作为输出 在阅读csv输入时,我尝试了列表中的所有编码,它们的描述中提到了中文。 如果我使用在java中解析汉字显示出奇怪的行为,java,string,character-encoding,chinese-locale,Java,String,Character Encoding,Chinese Locale,我有一个csv文件,其中有些字段有中文字符串。 不幸的是,我不知道这个输入csv文件的编码是什么。 我试图读取这个输入csv,并使用其中的选择性字段,我制作了一个html和另一个csv文件作为输出 在阅读csv输入时,我尝试了列表中的所有编码,它们的描述中提到了中文。 如果我使用 InputStreamReader read = new InputStreamReader(filepath,"GB18030"); 用于读取csv 及 对于编写html和csv,我的输出不会显示奇怪的字符 但是,
InputStreamReader read = new InputStreamReader(filepath,"GB18030");
用于读取csv
及
对于编写html和csv,我的输出不会显示奇怪的字符
但是,有两个问题:
因此,字符的含义和表示方式也存在差异。输出意味着您的输入不是GB18030编码
另外:请检查并再次检查您如何查看您的文件:程序使用什么编码打开文件,特别是输入文件。通常,文本文件(和CSV文件)不附带显示其编码的元数据,因此编辑必须猜测,猜测很容易出错。在读/写汉字时,请保持编码一致。由于某些汉字可能无法用所有编码表示,例如GBK, GB18030等
您可以尝试使用UTF-8编码来处理汉字。您可以在Linux/UNIX/GNU-win32上使用
file
命令来检查您的CSV编码吗?你试过UTF-8和UTF-16吗?谢谢!我尝试了file命令,它显示了输入csv的UTF-8编码,所以现在我使用UTF-8读取,UTF-16写入html,现在我可以看到完全相同的输入和输出字符串,并且没有替换字符!
OutputStreamWriter osW=new OutputStreamWriter(objBufferedOutputStream,"UTF-16");