将long转换为String -garbled String

时间:2014-12-26 03:56:16

标签: java hbase

我现在想查询HBase(在线数据库)中的记录来验证我已经写过的功能之一。但是在我公司,我没有权限访问在线DB。所以,我必须给行操作和维护工程师提供行密钥(字符串类型),并让他查询我。

我已经阅读了应用程序代码,它生成的行键的类型是byte []。所以我将它转换为String。

byte[] result = consumeRecordRowKey.toBytes();
String resultString = new String(result);

但是看起来像这样,它是乱码: enter image description here

它使用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

1 个答案:

答案 0 :(得分:1)

您和byte []的创建者可能有不同的默认语言环境。你应该让他告诉你他的默认语言环境

 System.out.println(Charset.defaultCharset());

或通过更新代码来同步您的区域设置

 string.toByteArray(STANDARD_CHARSET_OF_YOUR_CHOOSING);

在他的结尾和

 new String(bytes, STANDARD_CHARSET_OF_YOUR_CHOOSING);

在你的身上。