1

我正在使用 Carbide.c++ 2.0 创建一个使用我自己的 web 服务的 S60 应用程序。我用过雅虎!图像搜索示例作为起点,数据很好地来回传送。当回复中有非英语字符时会出现问题,因此在列表框中呈现给用户的文本不正确。Web 服务回复的 XML 文档是 UTF8 编码的,当它被解析时,文本会在函数的 TDesC8 参数中呈现。

  1. 我应该使用什么数据类型来存储 UTF8 文本?
  2. 如何将存储在 TDesC8 变量/参数中的 UTF8 编码文本转换为上述数据类型的变量?
  3. 为了获得参数的不同数据类型,我可以实现 XML 类中的其他方法吗?
4

2 回答 2

3

您没有说明您使用的是哪个“XML 类”,因此很难说是否还有其他方法可以使用。

正如 laalto 在他的回复中所说,答案是使用静态 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 还有其他变体,可为您提供更多选项和结果。

谷歌搜索 CnvUtfConverter::ConvertToUnicodeFromUtf8 将向您展示如何使用 CnvUtfConverter::ConvertToUnicodeFromUtf8 的几个示例。

于 2009-08-02T08:15:17.427 回答
3
  1. S60 使用 16 位 unicode 字符。所以任何子类TDesC16都可以。
  2. 使用本机charconv库。包括charconv.h、链接charconv.lib和调用例如CnvUtfConverter::ConvertToUnicodeFromUtf8()
  3. 取决于您正在谈论的“Xml 类”。
于 2009-07-31T17:25:12.800 回答