Hector가 키와 컬럼 이름에서 제어 문자를 처리하는 데 문제가 있습니다. 저는 Cassandra 인스턴스와 대화하기 위해 Hector를 사용하는 프로그램을 작성하고 있습니다. 기존의 Keys 및 Column 이름이 있습니다. 16 진수 "594d69e0b8e611e10000242d50cf1ff7".Hector가 Java String에서 제어 문자를 올바르게 처리하지 않습니다 - 텍스트 문자열 대신 Hector에서 16 진수를 얻는 방법?
내가 자바 문자열로 그 진수를 입력하고 몇 가지 간단한 변환 - 텍스트 코드를 통해 연결 한 : hexString.append (정수를 호출하여 진수로 다시 돌아 자바 문자열 변환
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s1.length() - 1; i+=2){
/*Grab the hex in pairs*/
String output = s1.substring(i, (i + 2));
/*Convert Hex to Decimal*/
int decimal = Integer.parseInt(output, 16);
sb.append((char)decimal);
}
return sb.toString();
(. toHexString (textString.charAt (i))); 모든 문자에 대해 Java가이 데이터를 처리 할 수 있도록 원래의 16 진수를 반환합니다.) Java 문자열을 인쇄하면 아래 이미지의 맨 위 줄이 나타납니다.
[ 새 사용자가 이미지를 게시 할 수 없기 때문에 이미지가 게시되지 않았습니다.]여기이미지 :
OrderedRows<String, String, String> orderedRows;
orderedRows = rangeSlicesQuery.execute().get();
Row<String,String,String> lastRow = orderedRows.peekLast();
for (Row<String, String, String> r : orderedRows) {
String key = r.getKey();
System.out.println(key);
...
:
http://i.stack.imgur.com/yUJxs.png
불행하게도, 결론 (손상)이 나는이 코드를 다음 호출 할 때 헥터 (검사 및 설정을 많이 생략 문제의 단순화를 위해) 나에게 반환하는 것입니다
따라서 Hector는 Java String을 반환 할 때 제어 문자를 올바르게 처리하지 않습니다. 어떻게하면 헥터가 키와 컬럼을 16 진수에 텍스트 기반 자바 문자열 대신 나에게 돌려 줄 수 있을까요? 내가 그것을 보려고했지만 그렇게하는 방법에 대한 설명서는 본질적으로 누락되었습니다 (http://hector-client.github.com/hector//source/content/API/core/1.0-1/me/prettyprint/hector/api/beans/OrderedRows.html - K, V, N은 무엇입니까?). Cassandra CLI가 ascii ('')로 입력을 감싸지 않는다면 16 진수로 가정하기 때문에 단순해야한다고 상상합니다. 그러나 어떻게해야하는지 알 수는 없습니다.