Symbian S60 平台简体汉字处理浅谈
2010-02-25 04:37:00 来源:WEB开发网User::Leave(KErrArgument);
}
CleanupStack::PopAndDestroy(2); // characterSetConverter UnicodeString
UnicodeString 即为Unicode编码的字串,可以直接用于显示及写文件等操作。简体汉字串的显示除了编码问题,还要注意字体的选择,特别是对UI控件,最好是用 LatinBold12()(2版),AknLayoutUtils::FontFromId( ELatinBold12 )(3版)。简体汉字串显示的相关文档,例程很多,在这里就不多说了。至于文件中读写简体汉字串则要提几点注意:
1.自己写自己读
借助Symbian的文件服务将字串写入文件,一般都是带格式的,文件的首字符用来表示紧跟字串的长度和编码,所以不是什么文件都可以读的,例如用记事本编辑的文件一般就无法正确读出,除非写对了格式,而这种格式手工写是很烦琐的。所以对于程序内部文件读写,最好是:拿什么写就用什么读,要拿什么读就用什么写。
2.UTF-8编码简体汉字串读写文件
无论是从资源文件中读取的,还是.cpp中定义的UTF-8编码字串,都可以直接写直接读,无需编码转换。例如:
//写文件
_LIT( KFileName, "\private\xxxxxxxx\aTextFile.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));
更多精彩
赞助商链接