當前位置:首頁 » 編程語言 » c語言漢子編碼
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言漢子編碼

發布時間: 2022-07-30 08:04:27

⑴ 在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語言中怎樣獲得漢字編碼

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編碼了

⑶ 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語言中如何用編碼輸出中文字元

計算機用兩個位元組來表示一個漢字,「我」在內存里就是這樣存放的: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語言漢字機內碼特點是什麼漢字輸入輸出的原理

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或者GBK編碼,如果繁體,就用UTF-8
讀入漢字,從文件或者標准輸入讀,每次讀一個位元組,依次存入數組
如果可以確定是全部漢字,那麼可以一次讀入兩個位元組
結束符可以用\0,但是由於雙位元組漢字編碼低位可能是0 所以結束符要用雙\0
針對英文字元和漢字混合的情況,可以這樣判斷
每次讀入一個字元,如果該字元大於0x80 則這是一個漢字的高位,繼續讀入並存儲
如果該字元小於0x80 則這是一個英文字元,直接存儲

do
read one byte
check
if > 0x80 read next
save
while(!end)
大致這樣
直到讀入約定的end標志,可以是\n 可以是eof

⑺ VC中漢字是如何編碼的

如果沒有設置UNICODE開發環境,中文版VC中的漢字,用的是GBK(國標碼)。
李的國標碼是0xC0EE,白的國標碼是0xB0D7
也就是說,各占兩個位元組。

char a='李',b='白';

字元型變數只有一個位元組,所以這兩個賦值語句,只把漢字的低位位元組賦值給了變數。即:a=0xEE,b=0xD7

無符號十六進制用符號整數表示時,0xEE=-18, 0xD7=-41

你的這個問題,問題雖小五臟俱全,它里邊包含了很多概念性的東西。
比如,UNICODE開發環境,C語言中的字元型變數,十六進制,有符號無符號整數,等等。
希望掌握好基本概念,對深入學習C語言很有好處。

⑻ 用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語言中,漢字使用什麼編碼方式

DOS下是GB2312
(包含6763個漢字)
Windows下(主要是指Visual
Studio)是ANSI,這是Windows默認的編碼方式
(這其實就是用「記事本」保存文件時默認的編碼,據說記事本用這個編碼的時候跟
"聯通"兩個字有過節)
Linux不太清楚,現在據說都是UTF的,以前不是

⑽ 如何在在C語言裡面輸入漢字

定義一個字元串變數,這個變數的值中就可以輸入漢字了。

漢字是多位元組的,一個char放不下,可以使用字元數組,但需要給數組分配空間,或者使用string

例如:

#include<stdio.h>
intmain(void)
{
chara[7]="你好";
scanf("%*s",a);
printf("%s ",a);
return0;
}

(10)c語言漢子編碼擴展閱讀:

其實從語言學的角度來說,英文是線性的一維語言,而中文是平面的二維語言。而程序恰恰是線性的一維的。也就是說,線性的英文正好能契合線性的程序。所以,中文並不適合現有的編程方式。

然而,未來的發展可能超出你的想像。未來可能會有多維度的量子計算,也許二維的中文反而會比一維的英文更適合。

程序員對比過中文編程和英文編程就會明白,中文編程反而會提高門檻。因為編程的核心根本就不是什麼語言,而是程序化思維方式。最簡單的並不是英文編程,而是數學符號編程,極度抽象,普通人很難理解,但代碼量特別少。