hbase插入中文出现16进制该如何处理
hbase插入中文出现16进制该如何处理这时候使用转义字\符即可
推荐:
在使用Hbase shell 进行get 或scan操作时,时不时会看到一些数值被转成了16进制, 就像下面那样value=W\x5C5\x80那么这个值具体等于多少? 查阅资料后发现算法如下W -> W的ASCII码16进制 为 0x57\x5C -> 就是16进制不变 0x5C5 -> 5的ASCII码16进制 为 0x35\x80 -> 就是16进制不变 0x80所以从左往右重新拼起来就是0x575C3580 -> 转成十进制为1465660800
所以照例,如下value=W]PAW -> W的ASCII码16进制 为 0x57] -> ]的ASCII码16进制 为 0x5DP -> P的ASCII码16进制 为 0x50A -> A的ASCII码16进制 为 0x410x575D5041 -> 转成十进制为1465733185
以上是查询结果出现十六进制的情况, 那么如果查询的Key本身也被转为16进制怎么办? 因为有时候key中可能有中文字符.可以照如下操作:先写个简单测试程序把中文UTF-8转成16进制System.out.println(org.apache.commons.codec.binary.Hex.encodeHex("中文".getBytes("UTF-8")));
//输出结果:e4b8ade69687
System.out.println(new String(org.apache.commons.codec.binary.Hex.decodeHex("e4b8ade69687".toCharArray()),"UTF-8"));
//输出结果:中文
也可以直接使用网站工具https://sites.google.com/site/nathanlexwww/tools/utf8-convert转好后把16进制每2位一组前面加上\x就比如上面的e4b8ade69687 -> \xe4\xb8\xad\xe6\x96\x87
举个例子: 我要查询的key是CE20CCE09EEB4F8A6BB50E41953A55FCD|3|钢铁烈阳37|PA-1453442402-6111|PR-1453442402-3599直接get 'role_history_info' , 'CE20CCE09EEB4F8A6BB50E41953A55FCD|3|钢铁烈阳37|PA-1453442402-6111|PR-1453442402-3599'没有结果把其中的中文字符按照上面的方法转成如下钢铁烈阳->e992a2e99381e78388e998b3 -> \xe9\x92\xa2\xe9\x93\x81\xe7\x83\x88\xe9\x98\xb3查询时 包着key的单引号换成双引号get 'role_history_info' , "CE20CCE09EEB4F8A6BB50E41953A55FCD|3|\xe9\x92\xa2\xe9\x93\x81\xe7\x83\x88\xe9\x98\xb337|PA-1453442402-6111|PR-1453442402-3599"
查出来啦...
页:
[1]