字符串编码中文表示常用的有:gb2312,gbk,unicode,utf-8
其中gbk是gb2312的超集,也就是涵盖了gb2312编码的所有内容,
utf-8是unicode的在网络传输中的一种编码格式,
如果我们使用vc做为开发工具,在win下面进行开发,那么win
的默认字符集是 gbk的,而symbian系统默认的编码方式却是
unicode,也就是说直接写在程序里面的汉字在手机上显示的时候,
就会变成乱码。
通常解决这个问题的方法有两种:
(1)静态资源文件解决方案
(2)动态的调用字符集转换函数解决方案
对呀第一种解决方案来说,需要手工编辑rss文件,把汉字内容部分改为utf-8格式,
在rss文件的末尾或者开头添加:character_set utf8 即可
缺点是这种字符串一般针对静态资源,如果是那种随时根据数据变化更新汉字的情况
则需要考虑第二种情况
第二种情况动态转换字符集的方法
常使用ccnvcharactersetconverter和cnvutfconverter这两个类进行转化成symbian系统认识的unicode编码.
ccnvcharactersetconverter类可以进行symbian支持的所有编码转换
cnvutfconverter这个类常utf-8与unicode 和utf-7与unicode之间的相互转换
添加头文件
#include
在mmp里面添加
library charconv.lib // for gbk to unicode converter
这两步完成后,重新编译;下面的这两个函数就可以用了。
void cmcappui::convgbk2uni(tdesc8& original, tdes& res) {
#ifndef __wins__
rfs afileserversession;
afileserversession.connect();
ccnvcharactersetconverter* converter=ccnvcharactersetconverter::newlc();
if(converter->preparetoconverttoorfroml(kcharactersetidentifiergbk,afileserversession)!=ccnvcharactersetconverter::eavailable)
user::leave(kerrnotsupported);
tint state=ccnvcharactersetconverter::kstatedefault;
tptrc8 str( original );
hbufc* iinfotext = hbufc::newl( str.length() );
tptr16 ptr = iinfotext->des();
if(ccnvcharactersetconverter::eerrorillformedinput == converter->converttounicode(ptr, str, state))
user::leave(kerrargument);
res.zero() ;
res.copy(ptr) ;
afileserversession.close();
cleanupstack::popanddestroy();
delete iinfotext;
#else
res.format(_l("wayne len %d"), original.length()) ;
#endif
}
void cmcappui::convuni2gbk(tdesc& original, tdes8& res) {
#ifndef __wins__
tint state=ccnvcharactersetconverter::kstatedefault ;
ccnvcharactersetconverter* iconv ;
iconv = ccnvcharactersetconverter::newlc();
if(iconv->preparetoconverttoorfroml(kcharactersetidentifiergbk,
ieikonenv->fssession())!=ccnvcharactersetconverter::eavailable)
user::leave(kerrnotsupported);
iconv->convertfromunicode(res, original, state) ;
cleanupstack::popanddestroy() ;
#else
res.format(_l8("wayne chen %s"), original) ;
#endif
}
具体的使用方法:
tbuf8 title8 ;
tbuf title16 ;
tbuf8 msg8 ;
tbuf msg16 ;
title8.format(_l8("友情提示")) ;
convgbk2uni(title8, title16) ;
msg8.format(_l8(" 谢谢您的使用")) ;
convgbk2uni(msg8, msg16) ;
showinfodialog(title16, msg16) ;
即可,现在title16和msg16里面都存放的是16位的unicode中文字符串了,
可以直接显示了。
0
0
相关文章
学习c语言可以用什么软件?
vc++6.0怎么调试?
c# Thread.ApartmentState (STA/MTA) 和并发的关系
MAUI怎么创建可绑定的属性 BindableProperty教程
EF Core怎么处理Guid主键 EF Core Guid主键生成策略
相关标签:
本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门AI工具
相关专题
Golang 性能分析与pprof调优实战
本专题系统讲解 Golang 应用的性能分析与调优方法,重点覆盖 pprof 的使用方式,包括 CPU、内存、阻塞与 goroutine 分析,火焰图解读,常见性能瓶颈定位思路,以及在真实项目中进行针对性优化的实践技巧。通过案例讲解,帮助开发者掌握 用数据驱动的方式持续提升 Go 程序性能与稳定性。
9
2026.01.22
无人机驾驶证报考 uom民用无人机综合管理平台官网
无人机驾驶证(CAAC执照)报考需年满16周岁,初中以上学历,身体健康(矫正视力1.0以上,无严重疾病),且无犯罪记录。个人需通过民航局授权的训练机构报名,经理论(法规、原理)、模拟飞行、实操(GPS/姿态模式)及地面站训练后考试合格,通常15-25天拿证。
47
2026.01.21
热门下载
相关下载
精品课程
相关推荐
/
热门推荐
/
最新课程
最新文章






