RFileWriteStream 写入汉字
由于用到 RFileWriteStream 寫入漢字到文件中,之前沒有處理過,等寫入文件后才發現是亂碼。
問了問群里的朋友也沒有解決,后來就上網搜,終于找到一個解決方法,就是用 CCnvCharacterSetConverter 類
這個類是用來轉換Unicode 與其它編碼的,symbian 用的是 unicode 編碼,轉成漢字,只需把 unicode 轉為 gbk
就可以了,別的不說了,看代碼吧,很簡單的
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個的長度,如果不添加上,試驗時發現少一個漢字
????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();
?
這里是主要的代碼,紅色標出是用到的轉換
?
?
安平2009@原創
qi_jianzhou@126.com
轉載于:https://www.cnblogs.com/zziss/archive/2010/07/12/1775927.html
總結
以上是生活随笔為你收集整理的RFileWriteStream 写入汉字的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 线打断问题(转)
- 下一篇: jQuery中this与$(this)区