【发布时间】:2017-10-02 11:40:52
【问题描述】:
我正在尝试从文本文件中拆分一些带有 ascii 控制字符的字符串,最终得到以下输出:
Record1
Record2
Record3
Record4
我的文本文件在记事本++中如下所示:
但是当使用BufferedReader 从文本文件中获取行时,它不会从文件中捕获控制字符。我的代码如下所示:
File file = new File("Records.txt");
FileInputStream fis = new FileInputStream(file);
InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
BufferedReader bufferedReader = new BufferedReader(isr);
String text = bufferedReader.readLine();
System.out.println(text);
我的 sysout 的结果如下所示:
Record1Record2Record3Record4
我应该使用 ISO-8859-1 而不是 UTF-8 吗?
【问题讨论】:
-
您可以使用
ISO-8859-1进行尝试。字符是什么? -
我实际上尝试使用 ISO-8859-1 仍然有相同的结果。如果我没记错的话,这些字符是 ascii 控制代码。 cs.tut.fi/~jkorpela/chars/c0.html GS 是 ctl-] 是记事本++
-
从我的谷歌搜索它应该是一个单位分隔符 (ctrl ^_) char 31。它不是一个可见的字符。当你想用换行符替换它时,用这样的替换它
-
但目标不是以任何方式修改文件。把那些字符解析成Java真的不可能吗?
-
您确实阅读了它们,但它们没有换行符,因此您的输出将始终为 1 行。只有换行和回车开始新的一行。你也不修改文件。你读它,在内存中修改它,然后写它
标签: java ascii bufferedreader control-characters