5162|10

63

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

WinCE上关于字符转换的问题 [复制链接]


现在我想做一个TXT文本阅读器,系统是WinCE5.0,遇到一些问题想来请教一下大家。
WinCE是一个使用Unicod编码的系统,所以只要是使用Unicode编码存放的TXT文档都可以直接读到内存然后显示。但是我们平时创建TXT的时候一般都是使用默认的ANSI编码,如果要读取这样的文本的时候问题就来了。
1、如果我的WinCE系统是简体中文的,那么这时要读取一个ANSI的文本(该文本在简体中文的PC上创建),现在可以使用MultiByteToWideChar()函数,参数带936或是CP_ACP都可以正常转换,也能正常显示。
2、同样我的WinCE系统是简体中文的,那么这时要读取一个ANSI的文本(该文本在繁体中文的PC上创建),现在使用MultiByteToWideChar()函数,不管使用什么参数(950,936,CP_ACP)都不对。
3、现在换操作系统,如果WinCE系统是繁体中文的,那么这时要读取一个ANSI的文本(该文本在简体中文的PC上创建),现在可以使用MultiByteToWideChar()函数,不管使用什么参数(950,936,CP_ACP)都不对。
4、同样使用WinCE系统是繁体中文,那么这时要读取一个ANSI的文本(该文本在繁体中文的PC上创建),现在使用MultiByteToWideChar()函数,参数带950或是CP_ACP都可以正常转换,也能正常显示。
总的一个现象就是在简体的系统上只能转换简体PC上创建的文档,在繁体的系统上只能转换繁体PC上创建的文档,现在我想要实现的就是,能在简体或繁体的系统上都能读取在简体和繁体PC上创建的文档。这应该怎么做呢?
我想自己写两个转换的函数,一个是把GB转换成Unicode,另一个是把Big5转换成Unicode,我只知道要使用码表文件对照来转换,但具体的不大清楚,如果有谁清除的请指点一下,希望能尽可能的详细一点,不胜感激!
此帖出自WindowsCE论坛

最新回复

不依赖系统的codepage去做转换,你需要自己做一个类似的表以数组(code_pages)形式存在与内存中 当txt文件不是UNICODE编码时,可以如此转换 cp_convert(int type, int codepage,const char *srs,int srlen,wchar_t *wcs,int wclen) 根据代码编号和类型在code_pages中查找映射关系对srs运算最终得到UNICODE结果wcs 建议楼主可以研究一下码表文件WINCE.NLS  详情 回复 发表于 2008-9-12 10:14
点赞 关注
 

回复
举报

86

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
UP
此帖出自WindowsCE论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
LCMapString
http://msdn.microsoft.com/en-us/library/ms776290(VS.85).aspx
此帖出自WindowsCE论坛
 
 
 

回复

56

帖子

0

TA的资源

一粒金砂(初级)

4
 
UP
此帖出自WindowsCE论坛
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

5
 
codepage 是字符转换的基础,要想转换成功,系统必须中必须有相应的codepage
此帖出自WindowsCE论坛
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

6
 
首先你要将你的系统语言设置为简体中文和繁体中文,其次默认语言要为简体中文
此帖出自WindowsCE论坛
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

7
 
语言有没有关系不大

像我现在用的系统,就是简单的英文。但可以处理936的codepage,就是因为生成系统时支持了此codepage。
此帖出自WindowsCE论坛
 
 
 

回复

90

帖子

0

TA的资源

一粒金砂(初级)

8
 
晕,楼主,你的问题和宽字符完全没有关系,当你在使用简体和繁体混合的系统出现问题,这说明你简体的版本没有繁体版本的字库,所以无法正常显示,你可以先确保在简体的版本中安装国标的繁体字库,或者在繁体版本中安装国标简体字库,基本宽字符的转换完全是字节空间问题,跟显示基本没关系。
此帖出自WindowsCE论坛
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

9
 
我同意91program的说法,但别人的系统不一定支持那么多的codepage,所以我想自己做一个,不用依赖系统的codepage去做转换。
此帖出自WindowsCE论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

10
 
引用 7 楼 dthxman 的回复:
晕,楼主,你的问题和宽字符完全没有关系,当你在使用简体和繁体混合的系统出现问题,这说明你简体的版本没有繁体版本的字库,所以无法正常显示,你可以先确保在简体的版本中安装国标的繁体字库,或者在繁体版本中安装国标简体字库,基本宽字符的转换完全是字节空间问题,跟显示基本没关系。


这个说法,我不大同意,我认为我的系统中存在相关的字库。因为不管在什么系统上我使用Unicode编码都能正常显示简体或繁体。这应该就说明有相关的字库。否则,不可能显示出字来。而使用别的编码时显示乱码,说明,系统中没有相关的codepage来做转换,所以转换会出错。当然显示就不对了。
此帖出自WindowsCE论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

11
 
不依赖系统的codepage去做转换,你需要自己做一个类似的表以数组(code_pages)形式存在与内存中
当txt文件不是UNICODE编码时,可以如此转换
cp_convert(int type, int codepage,const char *srs,int srlen,wchar_t *wcs,int wclen)
根据代码编号和类型在code_pages中查找映射关系对srs运算最终得到UNICODE结果wcs
建议楼主可以研究一下码表文件WINCE.NLS
此帖出自WindowsCE论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表