VC6下将ANSI程序转化为UNICODE基本步骤
2011年04月07日
VC6下将ANSI程序转化为UNICODE基本步骤
因为VC6默认建立的工程是ANSI模式(微软已经意识到这个问题,在VC6之后的版本中建立工程默认的都是UNICODE版),造成一些问题(比如在繁体中文系统中会出现乱码),记录一下ANSI版程序转换成UNICODE的基本方法和一些注意事项,以下内容为转载:
1. 添加 UNICODE 和 _UNICODE 预处理定义
注意一定要把UNICODE和_UNICODE 加上
位置:Project Settings -> C/C++ -> Preprocessor definitions
添加了这两个定义后,MFC的一些内置类型如 TCHAR、CString 都将转为支持宽字符类型(wchar_t)
2. 将 Project Settings -> Link -> Output -> Entry Point 设为wWinMainCRTStartup
否则会有如下错误:
msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16
如果是console程序,则不用将入口点改为wWinMainCRTStartup,直接默认就行了
3. 使用宽字符相关类型,如:
char -> TCHAR、char * -> LPTSTR、const char * -> LPCTSTR
4. 对字符串常量使用 _T() 宏
5. 替换C库中的中字符串操作函数,如 strlen -> _tcslen、strcmp -> _tcscmp 等
类似的还有C库中字符串与数字的转换函数,如 atoi -> _ttoi、itoa -> _itot 等
6. C++标准库中的string,有对应的宽字符版本wstring,两者均为basic_string的特化版本
可在StdAfx.h中:
#ifdef _UNICODE
#define tstring wstring
#else
#define tstring string
#endif
然后在代码中使用 tstring 即可,类似的还有 fstream/wfstream、ofstream/wofstream 等
7. 宽字符版本的英文字符仍可直接与整型值进行比较,如:
CString s = _T("ABC");
ASSERT(s[0] == 'A');
8. 对于仍需使用ANSI字符串的地方,如第三方类库的接口,仍可继续使用;如需进行Unicode字符串和ANSI字符串的互转换,可使用 MultiByteToWideChar 和 WideCharToMultiByte
发表评论
-
C和C++之间库的互相调用
2012-01-20 12:20 644C和C++之间库的互相调用 2011年01月19日 1. ... -
linux文件缓冲区
2012-01-20 12:20 993linux文件缓冲区 2011年01 ... -
字母大小写转换可以不用循环吗
2012-01-20 12:20 717字母大小写转换可以不用循环吗 2011年03月22日 2 ... -
Linux0.11内核--汇编和C语言混合编程之参数传递
2012-01-20 12:20 773Linux0.11内核--汇编和C语言混合编程之参数传递 2 ... -
3月编程语言排行榜:C#超Python和PHP
2012-01-19 17:01 8053月编程语言排行榜:C#超Python和PHP 2011年0 ... -
python os模块
2012-01-19 17:01 1015python os模块 2011年05月22日 os.l ... -
2010年IT薪酬报告:java,apex,python,windows技术最赚钱
2012-01-19 17:01 7752010年IT薪酬报告:java,apex ... -
python 实现多台UNIX服务器自动巡检
2012-01-19 17:01 1831python 实现多台UNIX服务器自动巡检 2012年01 ... -
初学Python有感!!!
2012-01-19 17:01 567初学Python有感!!! 2011年01月25日 ... -
VC++6.0实现超链接
2012-01-17 06:46 1204VC++6.0实现超链接 2011年 ... -
经典的串口调试助手源代码(一)
2012-01-17 06:46 841经典的串口调试助手源代码(一) 2011年05月26日 ... -
经典的串口调试助手源代码(一)
2012-01-17 06:46 1126经典的串口调试助手源代码(一) 2011年04月26日 ... -
转 Windows API 函数在VFP中的运用
2012-01-17 06:46 1179转 Windows API 函数在VFP中的运用 2010年 ... -
VB-2.1
2012-01-17 06:46 680VB-2.1 2011年09月26日 Option E ... -
越南攻略
2012-01-16 05:36 566越南攻略 2010年07月02日 ... -
去越南相亲吧~~~~~
2012-01-16 05:36 588去越南相亲吧~~~~~ 2011年05月04日 越南,一 ... -
谷歌找客户的方法
2012-01-16 05:35 568谷歌找客户的方法 2011年12月16日 Wind怎么利 ...
相关推荐
VC ANSI环境下按行读取ANSI、UNICODE 、UNICODE big endian、UTF-8四种文本文件.docx
vc编写的汉字转unicode编码程序,经调试通过。
网上找了好多都没有源码,参考...unicode2ansi---------------vc工程 unicode到ansi编码转换的例子,有函数,有调用 bldunitable----------------别人的代码,用来生成码表的,“unicode2ansi码表1.txt”就是他生成的
将CStdioFile扩展,在ANSI环境下读取Unicode文件。
如题,教初学者如何设置UNICODE环境
MFC读UNICODE、ANSI格式文件的程序
vc编程将ascii码和unicode码的进行自由转换vc编程将ascii码和unicode码的进行自由转换vc编程将ascii码和unicode码的进行自由转换vc编程将ascii码和unicode码的进行自由转换vc编程将ascii码和unicode码的进行自由转换
vc6环境下build unicode工程需要的系统dll
vc6安装的时候可能你会忘记勾选unicode支持,这样就不会安装想用的unicode文件.当需要使用该类型的工程时,编译器找不到这些文件就会报错. 你可以重新到你的vc安装包中一个个找出所需的文件拷贝到指定的路径; 也可以...
vs2008下Unicode字符串和ANSI 字符串的相互转换 一直都很不习惯vs2008下的编程,是因为其对字符串的用法不像VC6那样方便了,其实这也增加了对字符串的安全检查, 这里我花了一下午的时间研究,终于搞懂了Unicode字符...
VC环境下基于OPenGLl的程序步骤. VC环境下基于OPenGLl的程序步骤.
升级VC6源码到VC2002等高版本,自动添加TEXT(),自动将strcpy等字符串函数改为_tcscpy等函数,使代码适应于UNICODE和MBCS版本。
VC调试程序步骤及断点类型详解,好东西啊!!!!!
VC7工程转换回VC6
在VC6.0下设置Unicode编译环境,很详细,很实用
在vc6中编写unicode程序必需的lib文件
/*程序用途:按行读取常见 (包括ANSI、UNICODE、UNICODE big endian、UTF-8)格式的文本文件 */ //核心算法:CStdioFileEx继承自CStdioFile, 覆盖CStdioFile...// 未完成WriteString方法,未在VC UNICODE 环境下的测试
LINK:fatal error LNK1104:cannot open file "mfc42ud.lib" 这是因为缺少支持Unicode的文件;... 压缩包里提供了MFC支持unicode编码的lib文件和dll文件及说明文档,同时还有VC6下设置UNICODE编译环境的文档.
基于VC6下的MFC的共享内存类,经过简单的封装,有简单易用的通信协议,可以用来实现同一台机器的不同程序之间的大数据量的传输,程序简单易用,并有示例程序,可以直接拿来用。
VC 6强大的AppWizard并不...用VC6进行程序的调试是非常方便的,我们可以在任一行设置一个断点,当程序执行到断点所在的行时就会暂时停住,此时,你可以单步执行程序(即一次只执行一条语句),并查看此时各种变量的值