社区
界面
帖子详情
在Unicode条件下"中国"的内码是:0xd0d6,0xfab9,而在MBCS时是0x4e2d, 0x56fd,请问如何互相转换
寒雪叔叔
2007-08-02 09:26:33
在Unicode条件下"中国"的内码是:0xd0d6,0xfab9,而在MBCS时是0x4e2d, 0x56fd,请问如何互相转换
我写的程序是Unicode的,但在读取一个ANSI的字符串进行比较时出了问题,两个相同的字符串由于采用了不同内码而不能正确的比较,所以我想将其中一个汉字的内码进行转换以便于比较。
...全文
326
5
打赏
收藏
在Unicode条件下"中国"的内码是:0xd0d6,0xfab9,而在MBCS时是0x4e2d, 0x56fd,请问如何互相转换
在Unicode条件下"中国"的内码是:0xd0d6,0xfab9,而在MBCS时是0x4e2d, 0x56fd,请问如何互相转换 我写的程序是Unicode的,但在读取一个ANSI的字符串进行比较时出了问题,两个相同的字符串由于采用了不同内码而不能正确的比较,所以我想将其中一个汉字的内码进行转换以便于比较。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
寒雪叔叔
2007-08-02
打赏
举报
回复
感谢感谢,马上结贴
WindAndSnow
2007-08-02
打赏
举报
回复
DL
yxz_lp
2007-08-02
打赏
举报
回复
http://noshape.bokee.com/4749054.html
david2083
2007-08-02
打赏
举报
回复
#include <stdio.h>
#include <windows.h>
wchar_t s1[] = L"中国";
char s2[] = "中国";
char s3[10];
wchar_t s4[10];
int main()
{
for(int i=0;i<2;i++)
printf("%04x ",s1[i]);
printf("\n");
for(int i=0;i<4;i++)
printf("%02x ",(unsigned char)s2[i]);
printf("\n");
WideCharToMultiByte(CP_ACP,0,s1,2,s3,10,0,0);
MultiByteToWideChar(CP_ACP,0,s2,4,s4,10);
for(int i=0;i<4;i++)
printf("%02x ",(unsigned char)s3[i]);
printf("\n");
for(int i=0;i<2;i++)
printf("%04x ",s4[i]);
printf("\n");
}
寒雪叔叔
2007-08-02
打赏
举报
回复
不好意思,上面内码示例我搞反了,应该是Unicode条件下“中国”的内码是0x4e2d, 0x56fd,而MBCS时是:0xd0d6,0xfab9!!!
我试图用WideCharToMultiByte来进行转换,但不行,这个函数似乎只是简单的将一个汉字转成了相同值的两个字符,比如"中"转成了[0xd6][0xd0],而我想得到的是[0x2d][0x4e]
Unicode
编码
在前面一篇博文中介绍了UTF-8编码实现,并简单介绍了
Unicode
编码。它们之间的关系就是字符的抽象与实现的关系。在抽象的字符集中,每个字符通过唯一的code point码位(一个整数,一般用十六进制)表示。但是在实际的存储、传输过程中需要“编码的实现”,UTF-8就是其中一种。还有其他的实现方式如UCS-2、UTF-16等。
Unicode
的码空间从U+0000到U+10FFFF,共
机
内码
和
UNICODE
特殊字符字库表
最近需要使用字库编写程序,想在网上搜索特殊字符的机
内码
和
UNICODE
对应表,但是找了很久也没有找到,失望啊,狠下心来自己通过程序生成了一个对应表,我想这个还是对大家有帮助的,发表出来供参考,呵呵!
/*
{区位码,国标码,
内码
,
Unicode
码}
*/{102,0x2122,0xA1A2,0x3001},/*、*/
{103,0x2123,0xA1A3,0x3002},/*。*/
{104,0x21
汉字编码原则及0XA1与0X80代表的含义。(汉字编码原则为转发)
字符串转GB2312编码后,若码值小于0XA1,则表示这不是一个汉字。 字符串转GB2321编码后,若码值小于0X80,则表示此字符串是有两个部分拼接而成。 网上得到字符串对应的编码都是直接转unsigned char,若是使用
UNICODE
,则需先将字符串转char,然后强转得到高地位,相加后可得对应的GB2312编码。 int iLength; char cName[1024];
Unicode
编码详解(四):UTF-16编码
Unicode
编码详解(四):UTF-16编码 若觉得本文写得还可以,请多多关注本人所作书籍《C++语法详解》电子工业出版社出版,网盘地址: https://pan.baidu.com/s/1dIxLMN5b91zpJN2sZv1MNg 本文为原创文章,转载请注明出处,或注明转载自“黄邦勇帅(原名:黄勇) 注意:若对本文的专业术语不了解,请参阅本系列文章(一)和(二) 一、UTF-16编码简介 1、 UTF-16是变长编码方式,每个字符编码为2或4字节。 2、历史 UTF-16编码源于UCS-2,是Uni
关于Keil汉字乱码,0xFD问题解决方法
keil编译器会忽略0xFD值的字符串,而这些显示不出来的汉字的
内码
的后一半正好通通都是0XFD……下面是Keil官方的说明:http://www.keil.com/support/docs/2618.htmGENERAL: COMPILER IGNORES 0XFD, 0XFE, 0XFF VALUES INSTRINGSInformation in thisarticle applies to...
界面
15,978
社区成员
115,896
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章