2009-07-31 5 views
1

私は自分のWebサービスを使用するS60アプリケーションを作成するためにCarbide.C++ 2.0を使用しています。 私はYahoo!画像検索の例を出発点にして、データをうまく行き来する。応答に英語以外の文字が含まれているため、リストボックス内のユーザーに提示されたテキストが正しくない場合に問題が発生します。 Webサービスが返信するXML文書はUTF8でエンコードされており、解析されるとテキストはTDesC8パラメータで関数に渡されます。SymbianのXml-parserからのTDesC8変数のUTF8エンコードされたテキストコーン

  1. UTF8テキストを格納するために使用するデータ型は何ですか?
  2. TDesC8変数/パラメータに格納されたUTF8エンコードされたテキストを、上記のデータ型の変数に変換するにはどうすればよいですか?
  3. おそらく、パラメータのdifferendデータ型を取得するために実装できる他のメソッドがXmlクラスにありますか?

答えて

3
  1. S60は16ビットのユニコード文字を使用しています。したがって、TDesC16のサブクラスであれば可能です。
  2. ネイティブのcharconvライブラリを使用してください。 charconv.hcharconv.libとリンクしてください。 CnvUtfConverter::ConvertToUnicodeFromUtf8()
  3. あなたが話している「Xmlクラス」によって異なります。
+0

ここで問題となるのは、UTF8でエンコードされたテキストが8ビットの文字列に格納され、非英語の文字が2文字になり、変換がテキストを修正しないということです。 iFeedText変数をRBuf8からRBuf16に変更しようとしましたが、Xml :: ParseL()がRBuf16をパラメータとして使用できませんでした。 –

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の使用方法に関するいくつかの例を紹介します。

関連する問題