0

当我使用 NIO2 通道读取此字符串时:

È bla bla bla

我在控制台中得到了这个:

? bla bla bla

我想知道如何设置字符集,当代码是这样的:

RandomAccessFile aFile = new RandomAccessFile("in.txt", "rw");
FileChannel inChannel = aFile.getChannel();

ByteBuffer buf = ByteBuffer.allocate(48);

int bytesRead = inChannel.read(buf);
while (bytesRead != -1) {

  System.out.println("Read " + bytesRead);
  buf.flip();

  while(buf.hasRemaining()){
      System.out.print((char) buf.get());
  }

  buf.clear();
  bytesRead = inChannel.read(buf);
}
aFile.close();

我想设置这样的东西:

StandardCharsets.ISO_8859_1
4

1 回答 1

1

从代码中可以看出,您正在从 FileChannel 读取字节。您将如何解释这些字节取决于您。

在您的代码中,当您这样做时,读取的字节将转换为字符串System.out.print((char) buf.get());。这就是您看到该输出的原因。

尝试String使用指定所需字符集的构造函数显式创建一个新字符,即String(byte[] bytes, Charset charset)

于 2013-07-28T12:31:21.977 回答