我现在想查询HBase(在线数据库)中的记录来验证我已经写过的功能之一。但是在我公司,我没有权限访问在线DB。所以,我必须给行操作和维护工程师提供行密钥(字符串类型),并让他查询我。
我已经阅读了应用程序代码,它生成的行键的类型是byte []。所以我将它转换为String。
byte[] result = consumeRecordRowKey.toBytes();
String resultString = new String(result);
但是看起来像这样,它是乱码:
它使用defaule编码类型生成byte [],所以我也使用默认编码。 操作和维护工程师认为他不能查询使用这个String.So,我该怎么做才能解决这个问题?
更新 consumeRecordRowKey.toBytes()执行以下操作: 它合并两个字节数组,两个字节数组是:
byte[] array1 = Bytes.toBytes("2088301654230372");
byte[] array2 = Bytes.toBytes(9223370625843459807);//convert a long value
和什么是garbles是由long值转换的字节。我想知道,如何将long值转换为byte []并从中获取正常的String ?
答案 0 :(得分:1)
您和byte []的创建者可能有不同的默认语言环境。你应该让他告诉你他的默认语言环境
System.out.println(Charset.defaultCharset());
或通过更新代码来同步您的区域设置
string.toByteArray(STANDARD_CHARSET_OF_YOUR_CHOOSING);
在他的结尾和
new String(bytes, STANDARD_CHARSET_OF_YOUR_CHOOSING);
在你的身上。