将一个工程改为支持unicode。有什么好的办法?
工程源文件一份。
需要对其改动,使之支持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




