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

madhappy 2004-12-04 01:35:53
工程源文件一份。

需要对其改动,使之支持Unicode.怎么做?

请各位指点?
...全文
250 点赞 收藏 23
写回复
23 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
J 2004-12-07
找MSDN的索引:TCHAR.H 映射

看了你就全明白了
回复
yszmax 2004-12-07
关注
回复
oyljerry 2004-12-07
数据类型 说明
WCHAR Unicode字符
PWSTR 指向Unicode字符串的指针
PCWSTR 指向一个恒定的Unicode字符串的指针
对应的ANSI数据类型为CHAR,LPSTR和LPCSTR。
ANSI/Unicode通用数据类型为TCHAR,PTSTR,LPCTSTR。
回复
kingzai 2004-12-07
hwo to convert MBCS to Unicode?
see
http://www.codeproject.com/cpp/unicode.asp
回复
madhappy 2004-12-07
楼上的,定义WCHAR以后就不能以其它编码类型编译了。这样做得不好的!
回复
bobob 2004-12-07
#define char WCHAR
回复
yszmax 2004-12-07
感谢楼主
回复
tabris17 2004-12-07
如果代码里用的是char而不是TCHAR的话……

楼主,你慢慢改吧
没别的办法
回复
madhappy 2004-12-07
这几天看了一些文章,总结一下。

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 若此时工程仍然有问题,仔细调试代码吧……我也希望只要简单的几步就能够解决问题。可是我不会……那位高人有办法。支两招吧……
回复
Mr-Chen 2004-12-07
定义了UNICODE宏,系统就会自动切换到UNICODE版本
当然只定义了宏并不能实现自动的转换,他还需要一系列的字符定义支持。
TCHAR被定义为wchar_t
LPTSTR被定义为LPWSTR
在使用字符串常量的时候需要使用_TEXT(“MyStr”)来支持系统的自动转换
使用MultiByteToWideChar
回复
smallcrocodile 2004-12-07
关注
回复
powerbamboo 2004-12-07
使用_T(),TCHAR,LPCTSTR,LPTSTR等等替换原来的内容。高效合理的使用正则表达式可以节省人力。
回复
madhappy 2004-12-06
顶一下
回复
madhappy 2004-12-04
如果纯粹是美语,那么8位足够了。

但是对于亚洲字符。则需要两位以上去存储字符。这是概念性的东西/。

现在我面对的是源代码。看到的是CString;是LPSTR; 看到的是char *szXXX;看到的是"const string";
我该怎么做?

回复
oyljerry 2004-12-04
TCHAR
MultiByteToWideChar
回复
oyljerry 2004-12-04
一般对于中文,日文,韩文等需要用unicode格式
回复
madhappy 2004-12-04
楼上的那个不用太担心的。可以专门写程序处理的阿

问题是那些地方应该处理,怎么处理好/

那位高人总结一下,或介绍点文章啊。
回复
ttfy1234 2004-12-04
好象比较困难哦。里面原先如果有很多字符串,一个个来不可想象——+_+
回复
EnochShen 2004-12-04
在字符转换的时候用
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
回复
Trashy 2004-12-04
关注、学习!
回复
加载更多回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2004-12-04 01:35
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……