读取本地UTF-8文件带有换行的中文文本

代码片段://

 

void LoadingMenus(const TDesC& aFilePath)
{
 RFs fs;
 RFile file;
 User::LeaveIfError(fs.Connect());
 TInt err=file.Open(fs,aFilePath,EFileRead);
// if(err=KErrNone)
 {
  TInt nsize;
  file.Size(nsize);
  HBufC8* hBuf8=HBufC8::NewLC(nsize-3);
  TPtr8 ptr=hBuf8->Des();
  file.Read(3,ptr,nsize-3);//去掉windows系统在UTF-8编码中加入的3个EF BB BF 字节
  _LIT8(KNewLine,"/r/n"); //回车换行

  TBuf<20> buf16;
  TInt pos1=0;
  TInt pos2=0;
  TBuf8<420> ibuf8;
  ibuf8.Copy(ptr);
  TBool isOut=EFalse;
  while(pos1<ptr.Length())
  {
   pos2=ibuf8.Find(KNewLine);
   if(pos2==KErrNotFound)
   {
    ibuf8=ibuf8.Mid(0,ptr.Length()-pos1);
    isOut=ETrue;
   }
   else
    ibuf8=ibuf8.Mid(0,pos2);   
   CnvUtfConverter::ConvertToUnicodeFromUtf8(buf16,ibuf8);
   menus.Append(buf16);
   pos1+=(pos2+2);
   ibuf8=ptr.Mid(pos1);
   if(isOut)
    break;
  }
  CleanupStack::PopAndDestroy(hBuf8);
 }
 file.Close();
 fs.Close();
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值