Текстовые конусы в кодировке UTF8 в переменной TDesC8 из Xml-анализатора в Symbian - PullRequest
1 голос
/ 31 июля 2009

Я использую Carbide.c ++ 2.0 для создания приложения S60, которое использует мой собственный веб-сервис. Я использовал Yahoo! Пример поиска изображения в качестве отправной точки и данные доставляются туда и обратно красиво. Проблемы возникают, когда в ответе присутствуют неанглийские символы, поэтому текст, представленный пользователю в списке, неверен. XML-документ, которым отвечает веб-служба, кодируется в формате UTF8, а при анализе текст представляется в параметре TDesC8 функции.

  1. Какой тип данных я должен использовать для хранения текста UTF8?
  2. Как преобразовать кодированный в UTF8 текст, хранящийся в переменной / параметре TDesC8, в переменную с указанным выше типом данных?
  3. Возможно, есть другие методы в классе Xml, которые я могу реализовать, чтобы получить другой тип данных параметра?

Ответы [ 2 ]

3 голосов
/ 02 августа 2009

Вы не указываете, какой "XML-класс" вы используете, поэтому сложно сказать, есть ли другие методы, которые вы можете использовать.

Как сказал Лаалто в своем ответе, ответ заключается в использовании статических функций CnvUtfConverter :: ConvertToUnicodeFromUtf8 или CnvUtfConverter :: ConvertToUnicodeFromUtf8L:

TDesC8& utf8_from_xml = getUtf8String(); //get the utf8 string somehow
HBufC16* unicode_string = CnvUtfConverter::ConvertToUnicodeFromUtf8L(utf8_from_xml);
CleanupStack::PushL(unicode_string);

Существуют и другие варианты CnvUtfConverter :: ConvertToUnicodeFromUtf8, которые предоставляют вам больше возможностей и результатов.

Google CnvUtfConverter :: ConvertToUnicodeFromUtf8 покажет вам несколько примеров использования CnvUtfConverter :: ConvertToUnicodeFromUtf8.

3 голосов
/ 31 июля 2009
  1. S60 использует 16-битные символы Юникода. Таким образом подойдет любой подкласс TDesC16.
  2. Используйте собственную библиотеку charconv. Включите charconv.h, ссылку с charconv.lib и позвоните, например, CnvUtfConverter::ConvertToUnicodeFromUtf8().
  3. Зависит от того, о каком «классе XML» вы говорите.
...