当前位置:首页 » 编程语言 » c语言汉字编码

c语言汉字编码

发布时间: 2022-06-20 09:09:42

c语言中文编码的问题

输入可以采用GB2312或者GBK编码,如果繁体,就用UTF-8
读入汉字,从文件或者标准输入读,每次读一个字节,依次存入数组
如果可以确定是全部汉字,那么可以一次读入两个字节
结束符可以用\0,但是由于双字节汉字编码低位可能是0 所以结束符要用双\0
针对英文字符和汉字混合的情况,可以这样判断
每次读入一个字符,如果该字符大于0x80 则这是一个汉字的高位,继续读入并存储
如果该字符小于0x80 则这是一个英文字符,直接存储

do
read one byte
check
if > 0x80 read next
save
while(!end)
大致这样
直到读入约定的end标志,可以是\n 可以是eof

❷ 请问如何用C语言实现汉字,和Unicode编码的转换

字转换:wctomb、mbtowc,wc 指 Wide charactor,mb 指 Multi-byte。
字符串转换:wcstombs、mbstowcs,wcs 和 mbs 的 s 指 string。

这 4 个函数是 C 标准函数库函数中的。如果只是在 Windows 平台下编程,可直接调用 Windows API 函数 WideCharToMultiByte 和 MultiByteToWideChar 实现。但是如果调用标准库函数的话,在 linux 下也是有效的。调用标准库函数,首先必须包含 locale.h 并调用 setlocale(LC_ALL, "") 后才能正确转换。Windows 下的 Multi-byte 是 ANSI 编码的,Wide charactor 是 Unicode (UTF-16) 编码,而 Linux 下的 Multi-byte 是 UTF-8 编码的,Wide charactor 是 Unicode (UTF-32) 编码。

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>

int main(void)
{
char str[12];
wchar_t wstr[] = { 0x52B3, 0x788C, 0 };
setlocale(LC_ALL, "");
wcstombs(str, wstr, sizeof(str)/sizeof(char));
printf("%s", str);
return 0;
}

❸ c语言中,汉字使用什么编码方式

DOS下是GB2312
(包含6763个汉字)
Windows下(主要是指Visual
Studio)是ANSI,这是Windows默认的编码方式
(这其实就是用“记事本”保存文件时默认的编码,据说记事本用这个编码的时候跟
"联通"两个字有过节)
Linux不太清楚,现在据说都是UTF的,以前不是

❹ C语言汉字机内码特点是什么汉字输入输出的原理

1、汉字编码方式很多,有国标码(GB2312_1980),大五码,GBK,简体18030,区位码,电报码,还有它们的变形:unicode 大端小端码,UTF-8,UTF-*,HZ 等等。
内码特点 :二进制双字节,每字节用到8bits.
输入原理,把连续输入的ASCII字符串,通过中文输入软件转化为双字节 中文内码。
输出原理,从 双字节中文内码 查出 字体(font)和 “刻痕",放大/缩小,在频幕或纸上显示打印出来。

2、在C语言中,可以通过将汉字作为字符串输入。
由于一个汉字占2个字节,所以对汉字的操作,只能以2个字节作为操作单位。
下面通过具体实例来说明汉字在C语言中的使用:
char s[] = "首都北京"; // 将汉字字符赋值给字符数组
char s2[20]; // 定义字符数组,存放用户输入的汉字
scanf("%s", s2); // 接收用户输入的汉字字符
printf("%d\n", sizeof(s)); // 计算字符数组s所占的内存单元,输出9(最后一个字节是结束字符'\0')
printf("%s\n", &s[2]); // 输出“都北京”(首字占2个字节)
printf("%s\n", s2); // 输出用户输入的汉字

❺ 用c语言怎样得到一个汉字的GB2312编码

源代码是GB2312编码方式写的就比较简单

voidprintgb(unsignedchar*s){
while(*s){
if(*s>=0x7f){
printf("%02x%02x",*s,*(s+1));
s+=2;
}
else{
printf("%04x",*(s++));
}
}
}
intmain(){
printgb("2017你好中国greatchina");
return0;
}

❻ C语言和汉字编码的问题 求教

为了区别于普通ASCII码,汉字编码一般在ASCII码之外,或者是两字节的第一字节在其之外,方法就是在汉字区位码上加一个固定的数字。但汉字有多套编码,互相不通用,可网络汉字编码了解详细信息。
为了显示汉字内码,可以在字符串中判断是否遇到汉字内码,如果是再按照编码规则解出汉字的区、位码,或者直接显示,
比如:char *str="汉字编码"; printf("%u,%u\n",(unsigned int)str[0],(unsigned int)str[1]);
用内码显示汉字即为反方向赋值,如汉字“保”的国际码为B1A3H,那么构造字符串"保“的语句如下:
char *str[256]; unsigned int *p; p=str; *p=0xa3b1; //小端模式或者 str[0]=0xb1; str[1]=0xa3;

❼ c语言是用什么编码的

C语言是没有编码的。它的编码就是平台的默认编码。
比方说在windows 上汉字编码用gb2312 或者 说cp936(GBK一般的windows默认代码页,windows分为不同的代码页,可以查看一下MSDN)。
http://msdn.microsoft.com/zh-cn/goglobal/cc305153(en-us).aspx

C里char 就是一个字节。你定义一个汉字,比方说 char *p=“中”C语言用两个字节来存储;
p指向的两个字节存储的就是‘中’的gb编码。分别是‘\xd6\xd0’。
当然如果用printf("%s",p) 输入到屏幕的话,它会自动解码输出‘中’这个字。
如果在linux平台下,它一般是uft-8编码的,道理大概一样。

❽ 在C语言中怎样才能得到汉字的ASCII码

ascii码指的是0~255的单字节编码。
汉字是没有ascii码值的。
同一个汉字
根据编码方式
占2~4的字节,有不同的实际码值。
要打印这个码值,最简单的方法
就是把汉字存储字符数组,然后打印字符数组的各个值。
比如
1234unsigned char str[]="打印汉字码值";int i;for(i = 0; i < sizeof(str); i ++) printf("%02x", str[i]);

❾ C语言中如何用编码输出中文字符

计算机用两个字节来表示一个汉字,“我”在内存里就是这样存放的:CE
D2。CE是str[0]的内容,D2是str[1]的内容。第一次循环输出str[0],但是这个字符在ASCII字符集里代表这样一个东西Î(不知道在这儿能不能正常显示……),但是Windows的命令提示符程序读取到这里就会自动使用宽字符集,也就是说,它已经准备好读取下一个字符,然后把他们当成一个字符显示出来。于是就出现了那个汉字。
#include
<stdio.h>
int
main()
{
printf("%c%c",(char)0xce,(char)0xd2);
}

❿ 在C语言中怎样获得汉字编码

C语言中,我们用整数输出字符得到的就是该字符的ASII码,如用整数输出a,得到97
但是,汉字用的是两个字节存储,我们需要分别输出者两个字节,就相当于输出该汉子的编码。
C语言支持ASCII,而GB2312与ASCII是兼容的,所以可以在C语言中获得汉字的GB2312编码
GB2312是两个字节的,第一字节是高八位,第二字节是低八位,比如下面的程序:

#include<stdio.h>
#include<string.h>
intmain(){
chara[5];
strcpy(a,"啊");
printf("%XH%XH ",(unsignedchar)a[0],(unsignedchar)a[1]);
return0;
}

a[0]是“啊”字的高八位,a[1]是低八位,程序运行结果是a[0]=B0 a[1]=A1,用16进制表示的,所以“啊”字的GB2312编码是B0A1了。输出时要强制转换成unsigned char,不然就变成负数了,因为编码是以8位的无符号整数为单位的。
也可以转成10进制,例如:
int b=(unsigned char)a[0]*256+(unsigned char)a[1];
b即为汉字的10进制GB2312编码了

热点内容
wifi路由手机怎么设置密码 发布:2025-02-06 07:00:57 浏览:985
nsurlsession上传 发布:2025-02-06 06:55:18 浏览:336
亚洲十帅exo访问 发布:2025-02-06 06:51:40 浏览:98
编程一首诗 发布:2025-02-06 06:45:04 浏览:528
惊声尖笑5下载ftp 发布:2025-02-06 06:33:16 浏览:528
共享文件夹让输入密码 发布:2025-02-06 06:32:28 浏览:970
收银服务器响应出错什么意思 发布:2025-02-06 06:24:43 浏览:607
sql用户授权 发布:2025-02-06 06:24:42 浏览:677
苹果手机相册显示正在上传 发布:2025-02-06 06:05:43 浏览:542
hadoop下载文件夹 发布:2025-02-06 06:05:08 浏览:187