gpt4 book ai didi

java - 为什么windows下文件第一行的第一个字符是0?

转载 作者:可可西里 更新时间:2023-11-01 10:26:15 35 4
gpt4 key购买 nike

所以我正在用 Java 读取一个纯文本文件,我想确定哪些行以“abc”开头。我做了以下事情:

Charset charset = StandardCharsets.UTF_8;BufferedReader br = Files.newBufferedReader(file.toAbsolutePath(), charset);String line;while ((line = br.readLine()) != null) {   if (line.startsWith("abc")) {       // Do something   }}

但如果文件的第一行是“abcd”,则不会匹配。通过调试,我发现第一个字符是 0(不可打印字符),因此它不会匹配。为什么?我如何可靠地识别哪些行以“abc”开头?

编辑:也许我应该指出我正在使用记事本创建文件

最佳答案

Windows 在 UTF-8 方面存在一些问题,因此它是 UTF-8 BOM (Byte Order Mark) 的重度用户。 .

如果我的猜测是正确的,那么前三个字节将是(十六进制):0xef、0xbb、0xbf。

例如,鉴于 Excel 使用 BOM 前缀创建 UTF-8 CSV 文件,如果记事本也这样做,我一点也不会感到惊讶...

编辑:毫不奇怪,情况似乎是这样:见here .

关于java - 为什么windows下文件第一行的第一个字符是0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16995935/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com