zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    FIR滤波器相关解释
    FIR数字信号滤波器
    图像中的插值
    对DDS的深度认识
    嵌入式媒体处理(EMP)中的编码和解码
    FPGA噪声干扰
    视频压缩概述
    ALTERA DDRII IP核使用
    MyEclipse的使用
    Java开发API文档资源
  • 原文地址:https://www.cnblogs.com/zziss/p/1775927.html
Copyright © 2011-2022 走看看