分享

HBase的汉字乱码问题

运用Java的API存储汉字到hbase中,代码如下:
    public static void insterRow(String tableName,String rowkey,String colFamily,String col,String val) throws IOException {
        init();
        Table table = connection.getTable(TableName.valueOf(tableName));
        Put put = new Put(Bytes.toBytes(rowkey));
        put.addColumn(Bytes.toBytes(colFamily), Bytes.toBytes(col), Bytes.toBytes(val));
        table.put(put);

        //批量插入
       /* List<Put> putList = new ArrayList<Put>();
        puts.add(put);
        table.put(putList);*/
        table.close();
        close();
    }
参数直接穿得就是"参数"这种格式的
然后从Hbase中读取数据代码如下:
Table table = connection.getTable(TableName.valueOf(tableName));
        Get get = new Get(Bytes.toBytes(rowkey));
        get.addFamily(Bytes.toBytes(colFamily));
        get.addColumn(Bytes.toBytes(colFamily),Bytes.toBytes(col));
        Result result = table.get(get);
        Cell[] cells = result.rawCells();
        String str ="NULL";
        String str1 ="NULL";
        if(cells.length > 0)
                str = new String(CellUtil.cloneValue(cells[0]));
       // Bytes.toString(CellUtil.cloneValue(cells[0])+" ");
       // CellUtil.cloneValue(cells[0]).toString();
        showCell(result);
        str1 = new String(str.getBytes("gbk"), "utf-8");
        table.close();
        close();
        System.out.println( Bytes.toString(Bytes.toBytes(str)));
        System.out.println(str1);
        return str1;
获取的这个str1中控制台打印有一部分汉字是乱码有一部分是??

已有(3)人评论

跳转到指定楼层
k9009147217 发表于 2016-11-3 14:31:21
insterRow("Info", "000001", "cf1", "CS", "律师实务所");
控制台打印:
QQ图片20161103143045.png
回复

使用道具 举报

k9009147217 发表于 2016-11-3 14:32:24
为什么会有部分乱码
回复

使用道具 举报

easthome001 发表于 2016-11-3 15:47:13
k9009147217 发表于 2016-11-3 14:31
insterRow("Info", "000001", "cf1", "CS", "律师实务所");
控制台打印:

编码最好一致。

尝试去掉输出 转换 试试,直接gbk
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条