CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

将一个工程改为支持unicode。有什么好的办法?

楼主madhappy(545454)2004-12-04 13:35:53 在 VC/MFC / 基础类 提问

工程源文件一份。  
   
  需要对其改动,使之支持Unicode.怎么做?  
   
  请各位指点? 问题点数:100、回复次数:23Top

1 楼bobob(静思)回复于 2004-12-04 13:39:32 得分 0

WCHARTop

2 楼madhappy(545454)回复于 2004-12-04 13:44:40 得分 0

各位既然都光临拙贴了就请多说几句吧!呵呵  
   
  基本概念我还是知道的,但是针对一个大的工程。我想请教一个行之有效的方法。Top

3 楼EnochShen(小疯子:真的好菜—知耻而后勇!)回复于 2004-12-04 13:45:16 得分 0

没做过,关注一下。。。Top

4 楼Trashy(【叶落随风】)回复于 2004-12-04 13:48:28 得分 0

关注、学习!Top

5 楼EnochShen(小疯子:真的好菜—知耻而后勇!)回复于 2004-12-04 13:52:57 得分 10

在字符转换的时候用  
  int   MultiByteToWideChar(  
      UINT   CodePage,                   //   code   page  
      DWORD   dwFlags,                   //   character-type   options  
      LPCSTR   lpMultiByteStr,   //   address   of   string   to   map  
      int   cchMultiByte,             //   number   of   bytes   in   string  
      LPWSTR   lpWideCharStr,     //   address   of   wide-character   buffer  
      int   cchWideChar                 //   size   of   buffer  
  );  
  LPCSTR   ->   LPWSTR    
  Top

6 楼ttfy1234(我自将心对明月,奈何明月照沟渠!)回复于 2004-12-04 14:00:03 得分 0

好象比较困难哦。里面原先如果有很多字符串,一个个来不可想象——+_+Top

7 楼madhappy(545454)回复于 2004-12-04 14:07:08 得分 0

楼上的那个不用太担心的。可以专门写程序处理的阿  
   
  问题是那些地方应该处理,怎么处理好/  
   
  那位高人总结一下,或介绍点文章啊。Top

8 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2004-12-04 14:47:28 得分 0

一般对于中文,日文,韩文等需要用unicode格式Top

9 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2004-12-04 14:55:22 得分 10

TCHAR  
  MultiByteToWideChar  
  Top

10 楼madhappy(545454)回复于 2004-12-04 15:04:32 得分 0

如果纯粹是美语,那么8位足够了。  
   
  但是对于亚洲字符。则需要两位以上去存储字符。这是概念性的东西/。  
   
  现在我面对的是源代码。看到的是CString;是LPSTR;   看到的是char   *szXXX;看到的是"const   string";  
  我该怎么做?  
   
  Top

11 楼madhappy(545454)回复于 2004-12-06 08:35:46 得分 0

顶一下Top

12 楼J()回复于 2004-12-07 00:15:15 得分 0

找MSDN的索引:TCHAR.H   映射  
   
  看了你就全明白了Top

13 楼kingzai(stevenzhu)回复于 2004-12-07 09:33:14 得分 60

hwo   to   convert   MBCS   to   Unicode?  
  see    
  http://www.codeproject.com/cpp/unicode.asp  
  Top

14 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2004-12-07 10:25:29 得分 10

数据类型                     说明  
  WCHAR                 Unicode字符  
  PWSTR                 指向Unicode字符串的指针  
  PCWSTR                 指向一个恒定的Unicode字符串的指针  
  对应的ANSI数据类型为CHAR,LPSTR和LPCSTR。  
  ANSI/Unicode通用数据类型为TCHAR,PTSTR,LPCTSTR。Top

15 楼yszmax(兩廣~早餐是南瓜餅雞蛋豆漿炒米飯)回复于 2004-12-07 10:28:03 得分 0

关注Top

16 楼powerbamboo(清风明月)回复于 2004-12-07 13:31:53 得分 0

使用_T(),TCHAR,LPCTSTR,LPTSTR等等替换原来的内容。高效合理的使用正则表达式可以节省人力。Top

17 楼smallcrocodile(大鳄鱼)回复于 2004-12-07 13:40:50 得分 0

关注Top

18 楼crystal521(【云淡风轻】)回复于 2004-12-07 14:52:05 得分 10

定义了UNICODE宏,系统就会自动切换到UNICODE版本  
  当然只定义了宏并不能实现自动的转换,他还需要一系列的字符定义支持。  
  TCHAR被定义为wchar_t  
  LPTSTR被定义为LPWSTR  
  在使用字符串常量的时候需要使用_TEXT(“MyStr”)来支持系统的自动转换  
  使用MultiByteToWideCharTop

19 楼madhappy(545454)回复于 2004-12-07 15:29:54 得分 0

这几天看了一些文章,总结一下。  
   
  1     将所有的chat转换为TCHAR  
   
  2     将所有类似于LPSTR,   LSTR的宏,改为LPTSTR  
   
  3     给所有的常量字符串例如:   “hello   world!”加上宏_T()非MFC工程里面见面加上L   如:_T(“hello   world!”)  
   
  4     使用_tcsr前缀宏来替换strrchr()、_mbsrchr()和wcsrchr().等字符串函数。  
   
  5     使用类似于_stprintf(代替sprinft()和swprintf()),_tfopen(代替fopen()和_wfopen())等函数。    
   
  6     若想工程支持UNICODE还需要,在预编译选项里面加上_UNICODE,   UNICODE  
   
  7     若工程出现问题,查找对字符串的处理是否用了++   --   等操作。这样是不规范的,应当代替用charnext()等函数  
   
  8     若此时工程仍然有问题,仔细调试代码吧……我也希望只要简单的几步就能够解决问题。可是我不会……那位高人有办法。支两招吧……Top

20 楼tabris17(四不象)回复于 2004-12-07 15:37:39 得分 0

如果代码里用的是char而不是TCHAR的话……  
   
  楼主,你慢慢改吧  
  没别的办法Top

21 楼yszmax(兩廣~早餐是南瓜餅雞蛋豆漿炒米飯)回复于 2004-12-07 15:41:27 得分 0

感谢楼主Top

22 楼bobob(静思)回复于 2004-12-07 15:51:51 得分 0

#define   char   WCHARTop

23 楼madhappy(545454)回复于 2004-12-07 16:38:30 得分 0

楼上的,定义WCHAR以后就不能以其它编码类型编译了。这样做得不好的!Top

相关问题

  • 怎么把工程改为静态链接?
  • 如何建立一个UNICODE的工程
  • Unicode工程读取ANSI文件?
  • 有没有办法在一个工程中引入另一个工程?
  • 把程序修改为使用UNICODE后,换行符“\n”怎么无效了?
  • 高手快来看看啊,如何使VC工程支持UNICODE~~
  • 没办法!总是问些菜鸟问题!关于UNICODE!
  • 真不方便,如果用AppWizard创建工程时,选了single document,想改为multiple就麻烦了?
  • 怎样更改一个现有的工程,将他的名字改为其他的名字
  • 有没有办法把一个工程手工画的对话框用到另一个工程中呀??

关键词

  • 字符
  • unicode
  • 函数
  • 转换
  • 数据
  • 字符串
  • 工程
  • tchar
  • 定义
  • 办法

得分解答快速导航

  • 帖主:madhappy
  • EnochShen
  • oyljerry
  • kingzai
  • oyljerry
  • crystal521

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo