HBase处理中文字符串
来源:互联网 发布:全国网络统考成绩查询 编辑:程序博客网 时间:2024/05/21 08:52
Author:Pirate Leo
myBlog: http://blog.csdn.net/pirateleo/
myEmail: codeevoship@gmail.com
转载请注明出处,谢谢。
文中可能涉及到的API:
Hadoop/HDFS:http://hadoop.apache.org/common/docs/current/api/
HBase: http://hbase.apache.org/apidocs/index.html?overview-summary.html
Begin!
在设置scan的startRowKey与endRowKey时,经常需要在某个条件字符串后面补充出一个范围。(再比如SingleColumnValueFilter也会用到)
比如:我的条件字符串是“abc”,scan时我需要将下述内容都囊括到我scan的范围内。
abc123
abcdabc
abccca
....
这时候我startRowKey使用“abc”即可,上述字符串按字典序都比“abc”要大,“abc”串c之后的值是0嘛~
而endRowKey最初我使用了“abc~”,因为我查ASCII码表时‘~’是倒数第二个,值为127,足够大,肯定大于上述串中的1、d、c等字符。
这样做,在处理英文数据时就足够了,系统运行正常。
但当我处理中文数据时,中文一般都是以UTF-8格式处理的,一个汉字表示出来类似“0xe6,0xc2,0xe1”。0xe6大于127。所以使用‘~’遇到中文必然悲催。
我的解决方法:
使用UltraEdit,进入十六进制编辑模式,将值改为FF。然后回到文本模式,将刚才的字符复制下来。这个字符应该是一个不可显示的字符,看着好像两个空格的长度。
然后在设置endRowKey时
new String(name + " "); //这里只是示例,引号间就是刚才复制的那个字符。将这个字符串作为endRowKey,果然所有的中文字符就囊括在内了。
另外一定要注意:使用HBase API时不要使用str.getBytes将String转化为byte[] ,而应该使用Bytes.toBytes(str);同样使用Bytes.toString(bytes);完成逆向转换。
- HBase处理中文字符串
- HBase处理中文字符串
- HBase处理中文字符串
- python中文字符串处理
- 中文字符串处理
- php中文字符串处理
- python处理中文字符串
- HBase中关于中文的处理
- jni的中文字符串处理
- jni的中文字符串处理
- python中文字符串的处理
- python中文字符串编码处理
- jni的中文字符串处理
- c++ 中文字符串处理方法
- c++ 中文字符串处理方法
- shell中文件处理及字符串处理
- JSP 中的处理中文字符串的函数
- Java对中文字符串排序处理
- 泛型及泛型接口
- 【经验教训】shell read echo中的转义字符
- JQuery 增加、删除表格div层文本内容的JS代码 和仿select个性下拉框选择效果JS代码
- 淘宝商城首页鼠标经过整个区域图片变暗变亮的JS特效代码
- latex基本的结构article
- HBase处理中文字符串
- C语言基础库(一)
- Android开发环境搭建(Eclipse4.2)
- C语言库函数(二)
- C++常用库函数atoi,itoa,strcpy,strcmp的实现
- Ubuntu 命令和系统安装分区介绍
- C++常用库函数
- 实现两个大数的加减乘除
- 使用Ant 实现批量打包Android应用