汉字不能正常显示的问题,很烦人,帮忙。
我写一个程序,调用别人 的SDK函数,把每个汉字作为一个USHORT格式转入。
请问有谁可以告诉我,怎么把一个包含汉字CString类的对象,转化为一个USHORT
数组。
不胜感激,100分奉上
问题点数:100、回复次数:15Top
1 楼languiwen(滥)回复于 2004-08-03 19:44:27 得分 0
比如: USHORT = '奇' ;
它等于50918;
但是它的UNICODE 好象是22855,有什么办法呢?
比如把CString t("奇怪"); 怎么把它转化为USHORT[2]Top
2 楼UPCC(杂食动物)回复于 2004-08-03 19:45:23 得分 0
USHORT = L'奇'Top
3 楼antijpn(antijpn)回复于 2004-08-03 20:27:38 得分 0
一个是MultiByte Character System的字符,你要转换到Unicode字符,CString类里面好像是有这样的函数的Top
4 楼languiwen(滥)回复于 2004-08-04 20:45:28 得分 0
UPCC, antijpn(antijpn 你们好,我的意思是,比如我从一个编辑框里得到一个字符串,含汉字,还有别的字符,我该什么把这些字符一个一个地放到一个USHORT数组中去。
用L‘奇’的方法,是因为你事先知道这个字,但是用户从编辑框输入的东西,我是无法预知的。谢谢你们Top
5 楼UPCC(杂食动物)回复于 2004-08-04 21:11:01 得分 0
CString str;
str=Edit.Text;
int i;
i=Strlen(str);
USHORT Arr[];//还是用USHORT做例子
int n=0;
for(int j=0; j<i; j++)
{
if(str[i]>127)
{
arr[n]=Word(str[j],str[j+1]);
j++;
}
else
arr[n]=Word(str[j],0);
n++
}
不知道是否错误,顺便写的。但思想应该对的。判断那个字节是不是大于127,大就是汉字。Top
6 楼antijpn(antijpn)回复于 2004-08-04 22:27:59 得分 0
USHORT是2字节的类型,所以我估计应该是存放UNICODE或者MBCS,我给出一个UNICODE地实现
你的数据来源是什么?如果是TextBox的话,可以这样
CString str;
GetDlgItem(YOUR_TEXTBOX)->GetWindowText(str);
USHORT* ptr=new USHORT[str.GetLength()+1];//假定USHORT是双字节的数据
wcscpy(ptr,CString);
Top
7 楼LLnju(LLnju)回复于 2004-08-05 12:26:49 得分 0
转换成UNICODE处理是很简单的Top
8 楼expert2000(ZLX)回复于 2004-08-05 12:36:48 得分 0
收藏Top
9 楼flyelf(空谷清音)回复于 2004-08-05 21:00:58 得分 100
mbstowcs可以转换Top
10 楼languiwen(滥)回复于 2004-08-06 08:13:49 得分 0
我转换成了UNICODE,但得出来的结果并不成功,我先试一下UPCC(我是菜鸟)(我就喜欢---灌
的方法Top
11 楼yjh1982(血精灵)回复于 2004-08-06 08:17:48 得分 0
就用api转化muti到unicodeTop
12 楼languiwen(滥)回复于 2004-08-07 12:10:17 得分 0
就用api转化muti到unicode,我早试过了,是不是我参数设不对,
谁要是有成功的代码?希望要救救我了Top
13 楼LLnju(LLnju)回复于 2004-08-07 12:41:37 得分 0
#include <atlbase.h>
void func( LPSTR lpsz )
{
USES_CONVERSION;
...
LPWSTR x = A2W(lpsz)
// Do something with x
...
}
Top
14 楼dxj1234(Kindly⊙Wolf)回复于 2004-08-08 17:45:16 得分 0
要全部是汉字才不会乱码啊:0Top
15 楼peter9606( 荷尔蒙一失效 人就清醒了)回复于 2004-08-08 18:15:59 得分 0
mark~Top




