S60平台简体汉字处理浅谈
2010-07-21 04:21:00 来源:WEB开发网1.自己写自己读
借助Symbian的文件服务将字串写入文件,一般都是带格式的,文件的首字符用来表示紧跟字串的长度和编码,所以不是什么文件都可以读的,例如用记事本编辑的文件一般就无法正确读出,除非写对了格式,而这种格式手工写是很烦琐的。所以对于程序内部文件读写,最好是:拿什么写就用什么读,要拿什么读就用什么写。
2.UTF-8编码简体汉字串读写文件
无论是从资源文件中读取的,还是.cpp中定义的UTF-8编码字串,都可以直接写直接读,无需编码转换。例如:
//写文件 _LIT( KFileName, "privatexxxxxxxxaTextFile.txt" ); RFs FileServerSession; User::LeaveIfError(FileServerSession.Connect()); RFile file; if ( file.Replace(FileServerSession, KFileName, EFileWrite ) != KErrNone ) { return; } CleanupClosePushL( file ); _LIT( KUTF8String, "简体汉字串");//或者HBufC* UTF8ResourceString = StringLoader::LoadLC( R_UTF8_RESOURCE_STRING ); RFileWriteStream StreamWriteToFile( file ); CleanupClosePushL( StreamWriteToFile ); StreamWriteToFile << KUTF8String;//或者StreamWriteToFile << *UTF8ResourceString CleanupStack::PopAndDestroy(2); //file StreamWriteToFile //读文件 RFs FileServerSession; RFile file; User::LeaveIfError(FileServerSession.Connect()); CleanupClosePushL(FileServerSession); User::LeaveIfError(file.Open(FileServerSession,KHelloFileName, EFileStreamText)); CleanupClosePushL(file); RFileReadStream StreamReadFromFile(file); CleanupClosePushL(StreamReadFromFile); HBufC* StreamData= HBufC::NewLC(StreamReadFromFile, 32); CleanupStack::PopAndDestroy(3); //file StreamReadFromFile StreamData FileServerSession.Close();
得到的StreamData可以通过:
CAknInformationNote* InfoNote; InfoNote = new ( ELeave ) CAknInformationNote; InfoNote->ExecuteLD( *StreamData )
加以显示验证。
3.非UTF-8编码简体汉字串读写文件:
如前所述,非UTF8编码简体汉字串必须进行编码转换,主要有两种方法:
1).将字串转换为Unicode编码写入文件后直接读取:
//转换后写文件
更多精彩
赞助商链接