Rumah pembangunan bahagian belakang Tutorial C#.Net Symbian 关于字符编码转换

Symbian 关于字符编码转换

Dec 20, 2016 pm 02:51 PM

字符串编码中文表示常用的有:GB2312,GBK,Unicode,UTF-8 
其中GBK是GB2312的超集,也就是涵盖了GB2312编码的所有内容, 
UTF-8是Unicode的在网络传输中的一种编码格式, 
如果我们使用vc做为开发工具,在win下面进行开发,那么win 
的默认字符集是 GBK的,而symbian系统默认的编码方式却是 
Unicode,也就是说直接写在程序里面的汉字在手机上显示的时候, 
就会变成乱码。 
通常解决这个问题的方法有两种: 
(1)静态资源文件解决方案 
(2)动态的调用字符集转换函数解决方案 

对呀第一种解决方案来说,需要手工编辑rss文件,把汉字内容部分改为UTF-8格式, 
在rss文件的末尾或者开头添加:CHARACTER_SET UTF8   即可 
缺点是这种字符串一般针对静态资源,如果是那种随时根据数据变化更新汉字的情况 
则需要考虑第二种情况 

第二种情况动态转换字符集的方法 

常使用CCnvCharacterSetConverter和CnvUtfConverter这两个类进行转化成Symbian系统认识的Unicode编码. 

CCnvCharacterSetConverter类可以进行Symbian支持的所有编码转换 

CnvUtfConverter这个类常UTF-8与Unicode 和UTF-7与Unicode之间的相互转换 


添加头文件 
#include         //  for char set convert GBK - Unicode 
在mmp里面添加 
LIBRARY         charconv.lib    // for GBK to Unicode converter 

这两步完成后,重新编译;下面的这两个函数就可以用了。 
void CMcAppUi::ConvGbk2Uni(TDesC8& original, TDes& res) { 
#ifndef __WINS__ 
        RFs aFileServerSession; 
        aFileServerSession.Connect(); 
        CCnvCharacterSetConverter* converter=CCnvCharacterSetConverter::NewLC(); 
        
        if(converter->PrepareToConvertToOrFromL(KCharacterSetIdentifierGbk,aFileServerSession)!=CCnvCharacterSetConverter::EAvailable)
                User::Leave(KErrNotSupported); 
        
        TInt state=CCnvCharacterSetConverter::KStateDefault; 
        
        TPtrC8 str( original ); 
        HBufC* iInfoText = HBufC::NewL( str.Length() ); 
        TPtr16 ptr = iInfoText->Des(); 
        
        if(CCnvCharacterSetConverter::EErrorIllFormedInput == converter->ConvertToUnicode(ptr, str, state)) 
                User::Leave(KErrArgument); 
        
        res.Zero() ; 
        res.Copy(ptr) ; 
        aFileServerSession.Close(); 
        CleanupStack::PopAndDestroy(); 
        delete iInfoText; 
#else 
        res.Format(_L("wayne len %d"), original.Length()) ; 
#endif 


void CMcAppUi::ConvUni2Gbk(TDesC& original, TDes8& res) { 
#ifndef __WINS__ 
        TInt state=CCnvCharacterSetConverter::KStateDefault ; 
        CCnvCharacterSetConverter* iConv ; 
        iConv = CCnvCharacterSetConverter::NewLC(); 
        if(iConv->PrepareToConvertToOrFromL(KCharacterSetIdentifierGbk, 
                iEikonEnv->FsSession())!=CCnvCharacterSetConverter::EAvailable) 
                User::Leave(KErrNotSupported); 
        iConv->ConvertFromUnicode(res, original, state) ; 
        CleanupStack::PopAndDestroy() ; 
#else 
        res.Format(_L8("wayne chen %s"), original) ; 
#endif 


具体的使用方法: 
TBuf8<20> title8 ; 
TBuf<20>  title16 ; 
TBuf8<20>  msg8 ; 
TBuf<20>   msg16 ; 
title8.Format(_L8("友情提示")) ; 
ConvGbk2Uni(title8, title16) ; 
msg8.Format(_L8(" 谢谢您的使用")) ; 
ConvGbk2Uni(msg8, msg16) ; 
ShowInfoDialog(title16, msg16) ; 
即可,现在title16和msg16里面都存放的是16位的unicode中文字符串了, 
可以直接显示了。

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah alternatif untuk membatalkan bahasa C Apakah alternatif untuk membatalkan bahasa C Mar 03, 2025 pm 05:37 PM

Artikel ini meneroka cabaran penentuan penunjuk null dalam C. Ia berpendapat bahawa masalah itu tidak batal sendiri, tetapi penyalahgunaannya. Artikel ini memperincikan amalan terbaik untuk mencegah dereferensi, termasuk pemeriksaan pra-pengertian, penunjuk inisial

Cara menambah pengkompil C peringkat seterusnya Cara menambah pengkompil C peringkat seterusnya Mar 03, 2025 pm 05:44 PM

Artikel ini menerangkan cara membuat aksara baru dalam C menggunakan urutan \ n Escape dalam Printf dan meletakkan fungsi. Ia memperincikan fungsi dan menyediakan contoh kod yang menunjukkan penggunaannya untuk pecah talian dalam output.

Penyusun bahasa C mana yang lebih baik? Penyusun bahasa C mana yang lebih baik? Mar 03, 2025 pm 05:39 PM

Artikel ini membimbing pemula untuk memilih pengkompil C. Ia berpendapat bahawa GCC, kerana kemudahan penggunaannya, ketersediaan yang luas, dan sumber yang luas, adalah yang terbaik untuk pemula. Walau bagaimanapun, ia juga membandingkan GCC, Clang, MSVC, dan TCC, yang menonjolkan perbezaan mereka

Adakah Null masih penting dalam pengaturcaraan moden dalam bahasa C? Adakah Null masih penting dalam pengaturcaraan moden dalam bahasa C? Mar 03, 2025 pm 05:35 PM

Artikel ini menekankan kepentingan berterusan null dalam pengaturcaraan C moden. Walaupun kemajuan, null tetap penting untuk pengurusan penunjuk yang jelas, mencegah kesalahan segmentasi dengan menandakan ketiadaan alamat memori yang sah. Prac terbaik

Apakah versi web penyusun bahasa C? Apakah versi web penyusun bahasa C? Mar 03, 2025 pm 05:42 PM

Artikel ini mengkaji semula penyusun dalam talian untuk pemula, memberi tumpuan kepada kemudahan penggunaan dan keupayaan debug. Onlineegdb dan Repl.It diserlahkan untuk antara muka mesra pengguna dan alat debugging yang berguna. Pilihan lain seperti programz dan penyusunan

C Laman Web Pengaturcaraan Dalam Talian C Ringkasan Laman Web Rasmi C Laman Web Pengaturcaraan Dalam Talian C Ringkasan Laman Web Rasmi Mar 03, 2025 pm 05:41 PM

Artikel ini membandingkan platform pengaturcaraan dalam talian C, menonjolkan perbezaan ciri -ciri seperti alat debugging, fungsi IDE, pematuhan standard, dan had memori/pelaksanaan. Ia berpendapat bahawa platform "terbaik" bergantung kepada keperluan pengguna,

Kaedah Penyalinan Kod oleh Compiler Bahasa C Kaedah Penyalinan Kod oleh Compiler Bahasa C Mar 03, 2025 pm 05:43 PM

Artikel ini membincangkan penyalinan kod yang efisien dalam c ides. Ia menekankan bahawa penyalinan adalah fungsi IDE, bukan ciri pengkompil, dan strategi butiran untuk kecekapan yang lebih baik, termasuk menggunakan alat pemilihan IDE, lipatan kod, carian/menggantikan, templa

Cara menyelesaikan masalah tidak muncul tetingkap output oleh pengkompil bahasa C Cara menyelesaikan masalah tidak muncul tetingkap output oleh pengkompil bahasa C Mar 03, 2025 pm 05:40 PM

Artikel ini menyelesaikan masalah tingkap output yang hilang dalam kompilasi program C. Ia meneliti sebab -sebab seperti gagal menjalankan kesilapan, kesilapan program, tetapan penyusun yang salah, proses latar belakang, dan penamatan program yang cepat. Penyelesaian melibatkan ch

See all articles