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

  • 相关阅读:
    table表框去掉相邻的间隔
    各种日期格式化返回
    校验金额、大小写字母、大写字母、合法uri、email
    vue js校验金钱、数字
    vue-router 动态添加 路由
    可视化-echarts流向图制作
    HTTP状态码
    二分查找
    编程语言的变量为啥不能是数字开头
    python位运算
  • 原文地址:https://www.cnblogs.com/zziss/p/1775927.html
Copyright © 2011-2022 走看看