Symbian S60 平台简体汉字处理浅谈
2010-02-25 04:37:00 来源:WEB开发网1).右键点击工程文件夹的某个资源源文件->properties->Info,将Text file ecoding改为others中的UTF-8;
2).右键点击工程文件夹->properties->Info,将Text file encoding改为others中的UTF-8。
两者取一即可,只是后一种将使工程所有源文件的文本编码方式变为UTF-8。另外需要注意,Carbide中一旦有文本编码方式的修改,特别是资源源文件,最好重新写入字串,清除(clean)之后再建立应用或运行(build或run),否则上一次的结果仍可能会存在而影响这一次的建立。
二.非UTF-8编码字串
如前所述,如果不以UTF-8编码保存程序源文件,则程序源文件(.cpp)中的字串即为非UTF-8 编码字串。要想正常操作,则必须进行编码转换,但不是转换为UTF-8编码,而是必须转换成Unicode(标准的Unicode也称UTF-16)编码。例如:
_LIT8( KNonUnicodeString, "简体汉字串");
TPtrC8 point8( KNonUnicodeString );
CCnvCharacterSetConverter* characterSetConverter=CCnvCharacterSetConverter::NewLC();
//一般简体中文Windows使用的简体汉字编码是Gb2312或Gbk(ASCII字符集的扩展,也称ASCI字符集)
if( converter->PrepareToConvertToOrFromL(KCharacterSetIdentifierGbk,
iEikonEnv->FsSession()) == CCnvCharacterSetConverter::EAvailable )
{
}
else if ( characterSetConverter->PrepareToConvertToOrFromL(KCharacterSetIdentifierGb2312,
iEikonEnv->FsSession())!= CCnvCharacterSetConverter::EAvailable )
{
CleanupStack::PopAndDestroy();
User::Leave( KErrNotSupported );
}
TInt state=CCnvCharacterSetConverter::KStateDefault;
HBufC* UnicodeString = HBufC::NewL( point8 );
TPtr16 point16 = UnicodeString->Des();
if( CCnvCharacterSetConverter::EErrorIllFormedInput ==
characterSetConverter->ConvertToUnicode(point16, point8, state ) )
{
CleanupStack::PopAndDestroy();
更多精彩
赞助商链接