Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.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 - Fatal编程技术网

Java在一行中读取时添加空格?

Java在一行中读取时添加空格?,java,Java,所以我对这个节目已经束手无策了。我正在从Java的文本文件中读取。如果不考虑我对字符串所做的任何事情,一旦我有了它,这就是要显示的最简单的代码 while ((lineIn = myReader.readLine()) != null) { System.out.println("LineIn: \""+lineIn+"\""); System.out.println("Length: "+lineIn.le

所以我对这个节目已经束手无策了。我正在从Java的文本文件中读取。如果不考虑我对字符串所做的任何事情,一旦我有了它,这就是要显示的最简单的代码

            while ((lineIn = myReader.readLine()) != null) {
                System.out.println("LineIn: \""+lineIn+"\"");
                System.out.println("Length: "+lineIn.length());
            }
然而,它打印出来的东西确实很奇怪。该行应为:

001 2014/06/09 09:40:24 0.000

但我得到的是:

LineIn:�2.�6.�1.�8.� �2.�0�1.�4.�/�0�7.�/�1.�0� �2.�3.�:�1.�5.�:�0�3.� �0�.�0�0�0�"
长度:61


在堆栈溢出时,它实际上显示得很好。您可以复制并粘贴“LineIn:etc”“进入您的地址栏,查看编号中几乎没有不可见的空格。我不知道为什么会有这些,它们是什么,Java从哪里得到它们。在简单的文本编辑器中打开其来源的文档时,不会显示这样的间距,从文本编辑器复制粘贴到浏览器地址栏中也不会显示多余的间距。这很奇怪,我希望有人能提供见解。我在这里拔头发。

可能是由于您的阅读器使用的格式和编码,请尝试改用扫描仪。

看起来您正在读取UTF-16数据,就好像它使用了8位编码一样


如果您使用
java.io.InputStreamReader
,您可以指定输入文本,例如“UTF-16”。

java当然没有这样做,它可能是编码文件。你能把这个文件或它的一小部分上传到某个地方吗?

在我修复它之前先让你知道:Java和Javascript就像月球和地球一样不同。你的文件是如何编码的?@Dici:或者像汽车和地毯一样:试着改用扫描仪。你用的是
扫描仪吗?扫描仪是一种更简单、更容易的选择<代码>扫描仪
将根据文件开头的BOM自动推断文件的编码。要完成此操作,您应该为他提供一种修复编码的方法。也就是说,使用
Scanner
将根据文件开头的BOM自动推断编码。很好,@SnakeDoc。可以使用字符集“UTF-16”强制16位解码,它将读取可选的字节顺序标记以区分大尾端和小尾端。
java.util.Scanner
的文档说,默认字符集使用“底层平台的默认字符集”。它没有说会自动从UTF-16和UTF-8中选取字符集。最后使用了这个,它成功了。谢谢:)
InputStreamReader文件InputStreamReader=新的InputStreamReader(fileInStream,“UTF-16”)