无法使用UTF-8字符集将Thrift的cql结果从Byte数组转换为String

时间:2015-10-18 08:54:55

标签: java utf-8 cassandra thrift cql3

我正在尝试将cql查询结果转换为String然后转换为int,但它在第一步失败。我有以下方法:

private int getNextId() {
    int nextId = -1;
    CqlResult cr = null;

    try {
        cr = client.execute_cql3_query(ByteBuffer.wrap("select * from counter".getBytes()), Compression.NONE,
                ConsistencyLevel.ONE);
        Column column = cr.getRows().get(0).getColumns().get(1);
        nextId = Integer.parseInt(new String(column.getValue(), StandardCharsets.UTF_8));
    } catch (Exception ex) {
        // default try-catch for example purpose
        ex.printStackTrace();
    }

    return nextId;
}

在调试时,列的字节值为1B。在转换为String期间,它会以 square 而不是27结尾。同样在调试CqlResult变量包含以下信息:default_value_type:UTF8Type。据我所知,Cassandra还使用UTF-8存储数据。为什么它不起作用?我做错了什么?

0 个答案:

没有答案