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

c語言文字編碼

發布時間: 2022-05-19 21:20:07

c語言中西文最常用的編碼是什麼

C語言中,西文最常用的編碼是ASCII碼。

㈡ 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語言中字元編碼到底有啥用

你這個問題挺有意思的。
看得出來你學東西有點思考哈。
說說我的理解
電腦裡面保存的所有東西,其實都是1和0而已
所謂的字元型變數char,本質上和int變數只有長度的區別,也是保存1和0的,並沒有什麼特別之處。一個char變數,就是佔用一個位元組的空間。一個int變數,佔用2個位元組的空間

那這時候有個麻煩,我要輸出一個字母怎麼辦?
比如輸出a
電腦里只有1和0啊,如果要表示大點的數字還好辦,只要多幾位1和0,總可以表示
但是字母呢,符號呢?1 和0如何表示這些東西?
我寫程序時怎麼告訴電腦,我要在屏幕上顯示的是「a」呢?

所以電腦最初的設計者們,就要為字母、數字、常用符號等等設計一套編碼。
讓程序員可以用這些編碼來表示對應的字元。
這個編碼最好是全球統一的,要不同一個編碼,在你的電腦顯示a,在我的電腦顯示b,
那程序還怎麼用?
所以,ASCII應運而生

「使用指定的7 位或8 位二進制數組合來表示128 或256 種可能的字元。標准ASCII 碼也叫基礎ASCII碼,使用7 位二進制數來表示所有的大寫和小寫字母,數字0 到9、標點符號, 以及在美式英語中使用的特殊控制字元。」

有了這么一套約定俗成的東西,我只要輸入對應的ACSII碼,所有的電腦都會幫你輸出對應的符號了。明白了嗎?

其實漢字也一樣,漢字也有其內碼,才能夠通過輸入法來輸入漢字。

㈣ C語言讀寫文件的時候怎麼控制字元編碼方式

  1. C語言讀寫文件有兩種方式: 一種是文本方式,另一種是2進制方式。日文,中文,unicode, 都要用2進制方式。文件內容的編碼和編碼的轉化,同一種編碼的大端或小端編碼,都要自己安排處理。

  2. C語言不管讀寫都要通過fopen函數來,其中mode參數可以控制以二進制打開還是以文本方式打開。
    fopen的函數原型:FILE * fopen(const char * path,const char * mode);
    fopen函數的第一個參數是文件路徑,第二個參數是打開方式,有以下幾種方式:
    r 以只讀方式打開文件,該文件必須存在。
    r+ 以可讀寫方式打開文件,該文件必須存在。
    rb+ 讀寫打開一個二進制文件,允許讀數據。
    rw+ 讀寫打開一個文本文件,允許讀和寫。
    w 打開只寫文件,若文件存在則文件長度清為0,即該文件內容會消失。若文件不存在則建立該文件。
    w+ 打開可讀寫文件,若文件存在則文件長度清為零,即該文件內容會消失。若文件不存在則建立該文件。
    a 以附加的方式打開只寫文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數據會被加到文件尾,即文件原先的內容會被保留。(EOF符保留)
    a+ 以附加方式打開可讀寫的文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數據會被加到文件尾後,即文件原先的內容會被保留。 (原來的EOF符不保留)
    wb 只寫打開或新建一個二進制文件;只允許寫數據。
    wb+ 讀寫打開或建立一個二進制文件,允許讀和寫。
    wt+ 讀寫打開或著建立一個文本文件;允許讀寫。
    at+ 讀寫打開一個文本文件,允許讀或在文本末追加數據。
    ab+ 讀寫打開一個二進制文件,允許讀或在文件末追加數據。
    上述的形態字元串都可以再加一個b字元,如rb、w+b或ab+等組合,加入b 字元用來告訴函數庫打開的文件為二進制文件,而非純文字文件。

㈤ 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語言中如何指定字元串編碼方式

計算機用兩個位元組來表示一個漢字,「我」在內存里就是這樣存放的: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/c++支持的是ascii,不過漢字編碼中,gb2312與ascii是兼容的,所以可以在c中獲得漢字的gb2312編碼,漢字是2個位元組的,有高8位和低8位
採用16進製表示,「下」是cfc2,「冰」是b1f9,「雹」是b1a2,「啦」是c0b2

㈧ 在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語言字元編碼

'\101'是轉義字元
'\ddd'其中每個"d"代表一個八進制數
即'\101'就是八進制數0101(以0開頭的數為八進制數)
0101轉為十進制為:65(ASCII)
ASCII為65的字元為:A
所以C1='\101',和C1=65是一樣的

㈩ c語言中,漢字使用什麼編碼方式

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