unicode 如何转换为中文汉字? unicode 或 ucs-2 如何转换成汉字?能否提供实例代码?-tks-ed 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 转换为ascii码即可函数如下:int CUnicom::UnicodeToChar(char *UnicodeText, char *ASCText, unsigned char UnicodeLength){ wchar_t UnicodeWCH[100]; int MultiLength = 0; int WideLength = 0; unsigned char SMLength = 0; while(MultiLength < UnicodeLength) { UnicodeWCH[WideLength++] = ((unsigned char )UnicodeText[MultiLength] << 8) + (unsigned char)UnicodeText[MultiLength+1]; MultiLength += 2; } UnicodeWCH[WideLength] = 0; SMLength = WideCharToMultiByte(CP_ACP, 0, (LPWSTR)UnicodeWCH, WideLength, (LPSTR)ASCText, 161, NULL, NULL); return SMLength;} unicode就是为了世界上的所有语言符号而设计的符号集合是ascii集合的扩展汉字编码是unicode的一部分所以不明白你说的“转换”到底是什么意思? 非常感谢 loopyifly(深情咸鱼) :) #include < stdio.h >#include < locale.h > /*含有setlocale原型*/#include < stdlib.h > /*含有wcstombs,mbstowcs原型*/FILE *f;int i;char abuf[1000];char ubuf[1000];void u2a(){ f=fopen("u.fil","rb"); /*二进制读文件*/ i=fread(ubuf,1,1000,f); /*读出了i个字节*/ fclose(f); i=wcstombs(abuf,(wchar_t*)(ubuf+2),i-2); /*跳过Unicode头,转成的多字节数返到i*/ f=fopen("a.fil","wb"); /*二进制写文件*/ fwrite(abuf,1,i,f); /*将写入i个字节*/ fclose(f);}void a2u(){ f=fopen("a.fil","rb"); /*二进制读文件*/ i=fread(abuf,1,1000,f); /*读出了i个字节*/ fclose(f); i=mbstowcs((wchar_t*)ubuf,abuf,i); /*转成的宽字节数返到i*/ f=fopen("u.fil","wb"); fputc(0xff,f);fputc(0xfe,f); /*写Unicode头*/ fwrite(ubuf,1,i*2,f); /*一个宽字节占两个字节*/ fclose(f);}void main(){ setlocale(LC_CTYPE,".OCP"); /*代码页来自中文95操作系统*/ u2a();a2u();} 他的意思是 汉字的WCHAR 转换为 char(和英文的转换方法不一样) 为什么我调试的时候运行窗口很久才有反应啊!!!! /GR选项如何用程序来设置? 请问vc下面怎么把一般的字符串同unicode互相转换 怎么学用VC 08错误!帮看看。。。。 InstallShield实现驱动自动安装 有哪位高手帮我解决非模式对话框中的列表框添加选项出的问题 与,或,非的计算。。不知道怎么算出东西来的。 Release与Debug的困惑 400分世纪大挑战,中国移动信息平台短信息协议!!!!!!! 如何查找字符 用 vc 做数据库报表。请问有什么好的方法?
函数如下:
int CUnicom::UnicodeToChar(char *UnicodeText, char *ASCText, unsigned char UnicodeLength)
{
wchar_t UnicodeWCH[100];
int MultiLength = 0;
int WideLength = 0;
unsigned char SMLength = 0;
while(MultiLength < UnicodeLength)
{
UnicodeWCH[WideLength++] = ((unsigned char )UnicodeText[MultiLength] << 8)
+ (unsigned char)UnicodeText[MultiLength+1];
MultiLength += 2;
}
UnicodeWCH[WideLength] = 0;
SMLength = WideCharToMultiByte(CP_ACP, 0, (LPWSTR)UnicodeWCH, WideLength,
(LPSTR)ASCText, 161, NULL, NULL); return SMLength;
}
是ascii集合的扩展
汉字编码是unicode的一部分所以不明白你说的“转换”到底是什么意思?
:)
#include < locale.h >
/*含有setlocale原型*/
#include < stdlib.h >
/*含有wcstombs,mbstowcs原型*/
FILE *f;int i;char abuf[1000];char ubuf[1000];
void u2a(){
f=fopen("u.fil","rb");
/*二进制读文件*/
i=fread(ubuf,1,1000,f);
/*读出了i个字节*/
fclose(f);
i=wcstombs(abuf,(wchar_t*)(ubuf+2),i-2);
/*跳过Unicode头,转成的多字节数返到i*/
f=fopen("a.fil","wb");
/*二进制写文件*/
fwrite(abuf,1,i,f);
/*将写入i个字节*/
fclose(f);}
void a2u(){
f=fopen("a.fil","rb");
/*二进制读文件*/
i=fread(abuf,1,1000,f);
/*读出了i个字节*/
fclose(f);
i=mbstowcs((wchar_t*)ubuf,abuf,i);
/*转成的宽字节数返到i*/
f=fopen("u.fil","wb");
fputc(0xff,f);fputc(0xfe,f);
/*写Unicode头*/
fwrite(ubuf,1,i*2,f);
/*一个宽字节占两个字节*/
fclose(f);}
void main(){
setlocale(LC_CTYPE,".OCP");
/*代码页来自中文95操作系统*/
u2a();a2u();}