Какова кодировка символов для строковых представлений URI в Redland RDF?
Вопрос
Можно ли предположить, что строки, возвращаемые librdf_uri_as_string ()
используйте кодировку UTF-8.Или это возможно ISO-латиница (с дополнительной кодировкой URL)?
Я имею дело с URI в librdf_model
это было прочитано с librdf_parser_parse_file_handle_into_model ()
из FILE *
.Поможет ли мне переключиться на raptor_parser
(и, возможно raptor_iostream
вместо FILE *
также)?А Раптор в документации конкретно упоминается UTF-8.
Является librdf_parser
просто обертка для raptor_parser
и поэтому ответ UTF-8?
Решение
librdf, если уровень абстракции на один выше, чем у Raptor.По сути, librdf — это библиотека уровня приложения, которая объединяет хранилища Raptor, Rasqal и RDF.Если вы работаете на уровне librdf, вам следует использовать только API-интерфейсы librdf, хотя здесь и там есть некоторые дырявые абстракции.
Обычно в API, когда вы видите строки, передаваемые как (const) unsigned char *
, это UTF-8 полностью.Только некоторые идентификаторы, такие как имена синтаксиса, передаются как (const) char *
и они ASCII.
Раскрытие информации/предостережение:Я участвую в проектах Redland, но в последние годы активно над ними не работал.Раньше я хорошо знал внутренности, но память у меня не идеальна.
Чтобы ответить на конкретные вопросы:
Можно ли предположить, что строки, возвращаемые
librdf_uri_as_string ()
используйте кодировку UTF-8.
Да.
Поможет ли мне переключиться на
raptor_parser
(и, возможноraptor_iostream
вместоFILE *
также)?
Нет, разницы практически нет.Просто незначительное количество меньшего количества кода-обертки и немного другой API.
Является
librdf_parser
просто обертка дляraptor_parser
и поэтому ответ UTF-8?
Да.