一般的に使用される文字列エンコードの中国語表現は次のとおりです: GB2312、GBK、Unicode、UTF-8
GBK は GB2312 のスーパーセットであり、GB2312 エンコードのすべての内容をカバーします
UTF-8 はネットワーク送信における Unicode エンコード形式です。
開発ツールとして vc を使用し、win で開発する場合、win
のデフォルトの文字セットは GBK ですが、symbian システムのデフォルトのエンコード方式は
Unicode です。これは、漢字が直接書かれることを意味します。プログラム内の
を携帯電話で表示すると文字化けしてしまいます。
この問題を解決するには通常 2 つの方法があります:
(1) 静的なリソース ファイルの解決策
(2) 文字セット変換関数を動的に呼び出す解決策
はい、最初の解決策の場合は、RSS ファイルを手動で編集する必要があります。漢字のコンテンツ部分を UTF-8 形式に変換します。
RSS ファイルの最後または先頭に CHARACTER_SET UTF8 を追加します。
欠点は、中国語の文字が使用されるような状況の場合、この種の文字列は一般に静的リソース用であることです。データの変更に応じて随時更新されます
2 番目のケースを考慮する必要があります
2 番目のケースで文字セットを動的に変換する方法
CCnvCharacterSetConverter と CnvUtfConverter は、Symbian システムで認識される Unicode エンコードに変換するためによく使用されます
CCnvCharacterSetConverter クラスは、Symbian でサポートされているすべてのエンコーディング変換に使用できます
CnvUtfConverter は、UTF-8 と Unicode および UTF-7 と Unicode の間で変換するクラスです
ヘッダー ファイルを追加します
#include
mmp charconv.lib に
LIBRARY を追加します // GBK から Unicode へのコンバーター用
これら 2 つの手順が完了したら、次の 2 つの関数を使用できます。
void CMcAppUi::ConvGbk2Uni(TDesC8& オリジナル, TDes& res) {
#ifndef __WINS__
RFs aFileServerSession;
aFileServerSession.Connect();
CCnvCharacterSetConverter * Converter=CCnvCharacterSetConverter::NewLC();
(KCharacterSetIdentifierGbk,aFileServerSession)!=CCnvCharacterSetConverter ::EAvailable)
User::Leave(KErrNotSupported) );
TPtr16 ptr = iInfoText->Des();
if(CCnvCharacterSetConverter::EErrorIllFormedInput == コンバータ->Con vertToUnicode(ptr 、str、状態))
User::Leave(KErrArgument);
res.Zero(); ext;
#else
res.Format(_L("wayne len %d "),original.Length()) ; endif
}
void CMcAppUi::ConvUni2Gbk(TDesC& オリジナル, TDes8& res) {
#ifndef __WINS__
CCnvCharacterSetConverter* iConv ;
iConv = CCNVCHARACTERSETCONVERTER :: NewLC (); (iconv-& GT; PreparetoconvertoorFroml (Kcharactersetablentifiergbk,
)
CNVCHARACTERSETCONVARTER :: 利用可能)
user :: Leave (kelrnotsupported)
iconv-& gt;状態) ;CleanupStack::PopAndDestroy() ;
#else
res.Format(_L8("wayne chen %s") ;
#endif
}
TBuf8<20> gt; title16;
tbuf & lt; 20 & gt;
title8.Format (「ありがとう」 )) ;
ConvGbk2Uni(msg8, msg16) ;
ShowInfoDialog(title16, msg16) ; これで、title16 と msg16 の両方が 16 ビットの Unicode 中国語文字列を保存し、
を直接表示できるようになりました。