在vc中用 unicode方式处理汉字 遇到头疼问题,求指教 最近在做一个搜索程序,已改成unicode编码,从一个edit控件中输入汉字,再从本地字库文件中查找该文件是否含有这个汉字,比如输入“总书记”,调用GetWindowText把输入的内容读到内存,通过监视,三个汉字内容为0x603b 0x4e66 0x8bb0,结果我在本地用ultraedit打开字库文件,发现“总书记”编码是0xd7dc 0xcae9 0xbcc7,与vc中获得不一样,根本比较不了,这是什么原因?求高手指教 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 unicode:0x603b 0x4e66 0x8bb0ANSI:0xd7dc 0xcae9 0xbcc7说明字库文件是按照ansi编码存储的。要么把字库全部转换为unicode要么把输入的汉字转换为ANSI,再和字库内容进行比较。 请问GetWindowText以后如何再把汉字转化为ansi?对于汉字不是只能用unicode编码吗? 因为你的程序已经改成unicode编码,但是在简体中文字库采用多字节编码方式,因此你要进行unicode编码到多自己编码方式转换,有相应的转换函数的,可以在网上查一下, // wcsBuf is a WideChar string.int nlen = ::WideCharToMultiByte(CP_ACP, 0, wcsBuf, -1, NULL, 0, NULL, NULL); if (nlen == 0) return ""; BYTE[] bytes = new BYTE[nlen+1]; memset(byte,0, nlen+1); ::WideCharToMultiByte(CP_ACP, 0, wcsBuf, -1, bytes, nlen , NULL, NULL);LPSTR lpAnsiStr = (LPSTR)bytes; 把编码都转成一样的再对比,都转成ansi的,或者都转成unicode的 谢谢楼上各位,库文件确实是ascii的,我直接在vc设置里改回了ascii,这样汉字编码就一样了 金山毒霸免费了,今天刚开始,都进来发表一下看法吧 谁能说说IOCP的GetQueuedCompletionStatus偶尔返回“信号灯超时时间已到(121号)错误的原因? 数据和视频同步的问题 关于send的问题,请高手们指教 如何用内存文件进行序列化操作?? 对话框问题 请介绍一下WTL的编程步骤,到底有多好,情大家说说。 请问各路大侠。 如何响应MOUSE在标题栏的左键弹起消息?WM_LBUTTONUP和WM_NCLBUTTONUP都不行 谁能解释一下C语言中的双星号的意思和作用? 写好了一个聊天程序,怎么发布啊? 一个项目相关知识
ANSI:0xd7dc 0xcae9 0xbcc7说明字库文件是按照ansi编码存储的。要么把字库全部转换为unicode
要么把输入的汉字转换为ANSI,再和字库内容进行比较。
if (nlen == 0)
return "";
BYTE[] bytes = new BYTE[nlen+1];
memset(byte,0, nlen+1);
::WideCharToMultiByte(CP_ACP, 0, wcsBuf, -1, bytes, nlen , NULL, NULL);LPSTR lpAnsiStr = (LPSTR)bytes;