RFileWriteStream 写入汉字
由于用到 RFileWriteStream 寫入漢字到文件中,之前沒(méi)有處理過(guò),等寫入文件后才發(fā)現(xiàn)是亂碼。
問(wèn)了問(wèn)群里的朋友也沒(méi)有解決,后來(lái)就上網(wǎng)搜,終于找到一個(gè)解決方法,就是用 CCnvCharacterSetConverter 類
這個(gè)類是用來(lái)轉(zhuǎn)換Unicode 與其它編碼的,symbian 用的是 unicode 編碼,轉(zhuǎn)成漢字,只需把 unicode 轉(zhuǎn)為 gbk
就可以了,別的不說(shuō)了,看代碼吧,很簡(jiǎn)單的
HBufC8*? tmpName;
??CCnvCharacterSetConverter* conv = CCnvCharacterSetConverter::NewLC();
??for(TInt i=0;i<sels->Count();i++)
???{
????TPtrC pId = (*this->iIdList)[i];
????TPtrC pName = (*this->iNameList)[i];
????TPtrC pPhone = (*this->iPhoneList)[i];
????
????if (conv->PrepareToConvertToOrFromL(KCharacterSetIdentifierGbk,
??????this->iEikon->FsSession()) !=CCnvCharacterSetConverter::EAvailable )
?????{
??????User::Leave(KErrNotSupported);
?????}
????// 這里多加了2個(gè)的長(zhǎng)度,如果不添加上,試驗(yàn)時(shí)發(fā)現(xiàn)少一個(gè)漢字
????tmpName = HBufC8::NewLC(pName.Length()+2);
????TPtr8? pTmpName = tmpName->Des();
???? ???conv->ConvertFromUnicode(pTmpName,pName);
????
????CXmlNode* aNode = node->AddChildNote(bufPhone);
????CXmlNode* idNode = aNode->AddChildNote(bufId);
????idNode->SetValue(pId);
????CXmlNode* nameNode = aNode->AddChildNote(bufName);
????nameNode->SetValue(pTmpName);?// 寫入 gbk 編碼
????CXmlNode* numNode = aNode->AddChildNote(bufNum);
????numNode->SetValue(pPhone);
????CleanupStack::PopAndDestroy();
????
???}
??CleanupStack::PopAndDestroy();?
??doc->SaveToFileL();
?
這里是主要的代碼,紅色標(biāo)出是用到的轉(zhuǎn)換
?
?
 
安平2009@原創(chuàng)
qi_jianzhou@126.com
轉(zhuǎn)載于:https://www.cnblogs.com/zziss/archive/2010/07/12/1775927.html
總結(jié)
以上是生活随笔為你收集整理的RFileWriteStream 写入汉字的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
                            
                        - 上一篇: 线打断问题(转)
 - 下一篇: jQuery中this与$(this)区