在处理OpenTSDB数据的时候需要将tag = '中文。。。。'或者metric 中带有中文的数据进行存储,但是发现存储的时候报错,
原因是字节长度的范围空值,导致无法存储超过大于2个汉字的中文数据。
这里的解决方法是使用unicode处理,后存储,因此查询的时候,遇到中文的filter条件,也是同理先处理成unicode,来查询数据。
对于有中文和英文同时出现的数据中,可以先判断是不是带有英文。
代码段如下:
/** * 字符串转换unicode * @param string * @return */ private static String string2Unicode(String string) { StringBuffer unicode = new StringBuffer(); for (int i = 0; i < string.length(); i++) { // 取出每一个字符 char c = string.charAt(i); // 转换为unicode unicode.append("\\u" + Integer.toHexString(c)); } return unicode.toString(); }
/** * 判断是否为中文字符串 * @param str * @return */ public boolean hasFullChar(String str) { if (str.getBytes().length == str.length()) { // 英文返回false return false; } // 中文返回true return true; }