java - 一次将字节解码为字符

标签 java utf-8 character-encoding utf-16

我有代表字符的任意字节 block ,以任意方案编码(可能是 ASCII、UTF-8、UTF-16)。我知道编码。

我想要做的是找到字节数组中最后一个新行(\n)的位置。我想知道读取最后一个编码的\n 后还剩下多少字节。

我在 JDK 或任何其他库中找不到任何可以让我将字节数组一一转换为字符的内容。 InputStreamReader 以 block 的形式读取流,但没有给出任何指示读取了多少字节来生成字符。

我是否必须做一些可怕的事情,重新编码每个字符来计算出它的字节长度?

最佳答案

你可以尝试这样的事情

    CharsetDecoder cd = Charset.forName("UTF-8").newDecoder();
    ByteBuffer in = ByteBuffer.wrap(bytes);
    CharBuffer out = CharBuffer.allocate(1);
    int p = 0;
    while (in.hasRemaining()) {
        cd.decode(in, out, true);
        char c = out.array()[0];
        int nBytes = in.position() - p;
        p = in.position();
        out.position(0);
    }

关于java - 一次将字节解码为字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17227331/

相关文章:

java - 如何在 Selenium 中打印没有任何属性的子菜单链接

java - 使用选择选项选择文件夹的 GUI 组件

java - 如何创建虚拟 View 以锚定弹出窗口android

python - Python 中非拉丁文本输出为无意义

php - utf8 中的 'messed up characters' 列表

file - Mercurial:哪个配置属性控制文件内容的编码?

java - 如何使用 JPA 获取动态Where子句数据

Java 程序无法在 Ubuntu 中从 MySQL 打印印地语、古吉拉特语

PostgreSQL:编码 "UTF8"的字符在 plperl 存储过程中的 "LATIN1"中没有等效项

python - 如何将正确的编码参数传递给markdown_py?