首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >渠道中使用的NIO2和字符集

渠道中使用的NIO2和字符集
EN

Stack Overflow用户
提问于 2013-07-28 20:15:00
回答 1查看 96关注 0票数 0

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

代码语言:javascript
复制
È bla bla bla

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

代码语言:javascript
复制
? bla bla bla

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

代码语言:javascript
复制
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();

我想设置如下内容:

代码语言:javascript
复制
StandardCharsets.ISO_8859_1
EN

回答 1

Stack Overflow用户

发布于 2013-07-28 20:31:22

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

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

尝试使用contructor that specifies the desired character set显式创建新的String,即String(byte[] bytes, Charset charset)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17908096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档