2008-4-5 14:38
yunxing520
symbian SMS文件读取输出 中文乱码?
如题·
咋解决·
RFile file;
TBuf8<1024> buf ;
User:: LeaveIfError(file.Open(fsSession, _L("C:\\smsout\\message0.sms"), EFileRead));
CleanupClosePushL(file);
file.Read(0, buf, 1024);
RFileWriteStream writer;
writer.PushL();
User:: LeaveIfError(writer.Replace(fsSession, KFileName, EFileWrite));
writer << buf;
写入TXT文件· 中文乱码· 怎么解决·
[[i] 本帖最后由 蓝色的忧郁 于 2008-4-5 17:08 编辑 [/i]]
2008-4-7 11:15
蓝色的忧郁
搜了一下,找到了两个解决方法.你再参考SDK的例子看一下吧.
方法一:
CnvUtfConverter::ConvertFromUnicodeToUtf8(),把UNICODE转换成UTF-8编码后再显示.
方法二:
[code]CCnvCharacterSetConverter* converter=CCnvCharacterSetConverter::NewLC();
// Check if there is conversion between GBK/GB2312 and unicode
if(converter->PrepareToConvertToOrFromL(KCharacterSetIdentifierUtf8,
CEikonEnv:: Static()->FsSession())!=CCnvCharacterSetConverter::EAvailable)
User::Leave(KErrNotSupported);
TInt state=CCnvCharacterSetConverter:: KStateDefault;
HBufC* aTextBuf = HBufC:: NewL( aStuffData.Length() );
TPtr16 ptr = aTextBuf->Des();
if(CCnvCharacterSetConverter::EErrorIllFormedInput == converter->ConvertToUnicode(ptr, aStuffData, state))
User:: Leave(KErrArgument); //Leave if error in conversion.
CleanupStack:: PopAndDestroy(); //clean for converter[/code]
[[i] 本帖最后由 蓝色的忧郁 于 2008-4-7 11:16 编辑 [/i]]