2013-09-08 2 views
1

Я делаю несколько запросов Freebase. Иногда результат запроса содержит символы Unicode. Как преобразовать эти символы в строку Java? (например, The_Police_$0028band$0029The_Police_(band)). Я пробовал:Convert Freebase Unicode codecoints для Java String

new String(arg_in_byte,"UTF-8") 

но не работает. Я видел в другом вопросе, что одним из решений является метод replaceAll, но я думаю, что есть и другой метод, который будет более чистым.

+0

страница Вики Freebase, [ключ маскирование MQL] (http://wiki.freebase.com/wiki/MQL_key_escaping), что Том Моррис связан в своем ответе говорит, что библиотека freebase-python обрабатывает это. Это код Python, очевидно, но их ключевая кодировка находится в [mqlkey.py] (https://code.google.com/p/freebase-python/source/browse/trunk/freebase/api/mqlkey.py) и должна это трудно перевести. Это также указывает на то, что у Python не было стандартной функции библиотеки, чтобы сделать это, поэтому не удивительно, что Java тоже не является. –

+0

OpenRefine также имеет реализацию Java, но вы, вероятно, потратили бы больше времени на отслеживание и адаптацию кода, чем просто его реализацию, это настолько тривиально. https://github.com/OpenRefine/OpenRefine/blob/master/extensions/freebase/src/com/google/refine/freebase/expr/MqlKeyUnquote.java –

ответ

2

Это не кодированная кодировка UTF-8, а частное кодирование кодов Unicode. Если ваша клиентская библиотека Java для Freebase не включает в себя необходимый метод декодирования, вам нужно написать ее самостоятельно, чтобы взять четыре цифры после знака доллара ($), интерпретировать их как шестнадцатеричное целое, а затем преобразовать их в Java (который также использует кодовые точки Unicode внутри).

Вот некоторая документация по кодированию: http://wiki.freebase.com/wiki/MQL_key_escaping