Üblicherweise verwendete Zeichenkettenkodierungsdarstellungen in China sind: GB2312, GBK, Unicode, UTF-8
Unter ihnen ist GBK eine Obermenge von GB2312, was bedeutet, dass es den gesamten Inhalt der GB2312-Kodierung
UTF-8 abdeckt ist Unicode Ein Codierungsformat bei der Netzwerkübertragung.
Wenn wir VC als Entwicklungstool verwenden und unter Win entwickeln, ist der Standardzeichensatz von Win
GBK, während die Standardcodierungsmethode des Symbian-Systems ist
Unicode, was bedeutet, dass
zu verstümmelten Zeichen wird, wenn die direkt im Programm geschriebenen chinesischen Zeichen auf dem Mobiltelefon angezeigt werden.
Normalerweise gibt es zwei Möglichkeiten, dieses Problem zu lösen:
(1) Lösung für statische Ressourcendateien
(2) Lösung für dynamisch aufrufende Zeichensatzkonvertierungsfunktionen
Ja, die erste Als Lösung , müssen Sie die RSS-Datei manuell bearbeiten und den Inhaltsteil der chinesischen Zeichen in das UTF-8-Format ändern.
Fügen Sie Folgendes hinzu: CHARACTER_SET UTF8 am Ende oder Anfang der RSS-Datei gilt im Allgemeinen für statische Ressourcen. Wenn es sich um eine Situation handelt, in der chinesische Schriftzeichen jederzeit entsprechend Datenänderungen aktualisiert werden
, müssen Sie den zweiten Fall berücksichtigen
Der zweite Fall ist die Methode der dynamischen Konvertierung Der Zeichensatz
verwendet häufig CCnvCharacterSetConverter und die beiden Klassen CnvUtfConverter konvertieren in die vom Symbian-System erkannte Unicode-Kodierung
Die Klasse CCnvCharacterSetConverter kann alle von der Symbian-Klasse
CnvUtfConverter unterstützten Kodierungen konvertieren wird häufig für UTF-8 und Unicode und UTF-7 verwendet. Konvertieren in und von Unicode
Header-Datei hinzufügen
#include
Fügen Sie
BIBLIOTHEK in mmp charconv.lib // für den GBK-zu-Unicode-Konverter hinzu
Nachdem diese beiden Schritte abgeschlossen sind, können die folgenden zwei Funktionen verwendet werden.
void CMcAppUi::ConvGbk2Uni(TDesC8& original, TDes& res) {
#ifndef __WINS__
RFs aFileServerSession;
aFileServerSession.Connect();
CCn vCharacterSetConverter* converter=CCnvCharacterSetConverter::NewLC( ) ; : :KStateDefault ;
TPtrC8 str( original ); >
;
res .Copy(ptr) ;
CleanupStack::PopAndDestroy(); 🎜>#sonst
res.Format(_L("wayne len %d "), original.Length()) ;
#endif
}
void CMcAppUi::ConvUni2Gbk(TDesC& original, TDes8& res ) {
#ifndef __WINS__
TInt state= CCnvCharacterSetConverter::KStateDefault ;
CCnvCharacterSetConverter* iConv ;
if(iConv->PrepareToConvertToOrFromL (KCharact erSetIdentifierGbk,
iEikonEnv->FsSession())!= CCnvCharacterSetConverter::EAvailable)
User::Leave(KErrNotSupported);
iConv->ConvertFromUnicode(res, original, state);
CleanupStack::PopAndDestroy() ;
#else
res.Format(_L8("wayne chen %s"), original) ;
#endif
}
Spezifische Verwendungsmethode :
TBuf<20> title16;
TBuf<20> msg16; ;
msg8.Format(_L8("Danke für die Verwendung")) ;
ShowInfoDialog(title16, msg16) ; 16-Bit-Unicode-Zeichenfolgen für Chinesisch können direkt angezeigt werden.