Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中解析汉字显示出奇怪的行为_Java_String_Character Encoding_Chinese Locale - Fatal编程技术网

在java中解析汉字显示出奇怪的行为

在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,我的输出不会显示奇怪的字符 但是,

我有一个csv文件,其中有些字段有中文字符串。 不幸的是,我不知道这个输入csv文件的编码是什么。 我试图读取这个输入csv,并使用其中的选择性字段,我制作了一个html和另一个csv文件作为输出

在阅读csv输入时,我尝试了列表中的所有编码,它们的描述中提到了中文。 如果我使用

InputStreamReader read = new InputStreamReader(filepath,"GB18030");
用于读取csv 及

对于编写html和csv,我的输出不会显示奇怪的字符

但是,有两个问题:

  • 输出显示与输入完全不同的字符串! 我的意思是,即使我没有对代码中的任何字符串进行任何处理,也不会在输入csv的任何字段中找到输出
  • 例如,我的输入有一个中文字符字符串:陈真珍 在8号场。 但我的输出html有如下内容:闄堢湡鐝� 对应于输入字段编号8

  • 如您所见,有一个问号,即输出中unicode的替换字符闄堢湡鐝� 我请求你帮我追查这里哪里有错误

    PS:Aiso,我检查了谷歌翻译,发现,输入字符串陈真珍 意思是陈真真

    及其相应的输出字符串闄堢湡鐝� 意思是叫药包玉诀
    因此,字符的含义和表示方式也存在差异。

    输出意味着您的输入不是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");