在 hadoop 中迭代文本

Iterating Text in hadoop

我正在尝试遍历 Text 并打印其内容。这是我试过的代码:

    Text text = new Text();
    text.set("Hadoop");
    ByteBuffer buf = ByteBuffer.wrap(text.getBytes(),0,text.getLength());
    int cp = 0;
    while(buf.hasRemaining() && (cp = Text.bytesToCodePoint(buf)) != 1)
        System.out.println(Integer.toHexString(cp));

这是给我打印代码点。如何从中打印字符?

编辑

对于输入 "Hadoop",在 while 循环中将 int cp 转换为 char 是可行的。但是,当文本类似于 \u0041\u00DF\u6771\uD801\uDC00 然后使用相同的代码时,我在控制台中打印了 couple of ? 。这有什么具体原因吗?请推荐。

我想最简单的方法就是将 ints 转换为 chars。像这样:

int[] chars = { 0x41, 0xdf, 0x6671, 0x10400 };
for(int c : chars) {
    String out = String.format("%d -> %s", c, (char) c);
    System.out.println(out);
}

我的输出是:

65 -> A
223 -> ß
26225 -> 晱
66560 -> Ѐ