① 計算機中的內碼是什麼
我們常說漢字的"內碼"與"外碼"。
內碼是漢字在計算機內部存儲,處理和傳輸用的信息編碼。它必須與ASCII碼兼容但又不能沖突。
所以把國標碼兩個位元組的最高位置'1',以區別於西文,這就是內碼。漢字的輸入碼稱為"外碼"。輸入碼即指我們輸入漢字時使用的編碼。常見的外碼分為數字編碼(如區位碼),拼音編碼和字形編碼(如五筆)。
再說區位碼,"啊"的區位碼是1601,寫成16進制是0x10,0x01。這和計算機廣泛使用的ASCII編碼沖突。為了兼容00-7f的 ASCII編碼,我們在區位碼的高、低位元組上分別加上A0。這樣"啊"的編碼就成為B0A1。我們將加過兩個A0的編碼也稱為GB2312編碼,雖然 GB2312的原文根本沒提到這一點。
內碼是指操作系統內部的字元編碼。早期操作系統的內碼是與語言相關的.現在的Windows在內部統一使用Unicode,然後用代碼頁適應各種語言,"內碼"的概念就比較模糊了。我們一般將預設代碼頁指定的編碼說成是內碼。內碼這個詞彙,並沒有什麼官方的定義。代碼頁也只是微軟的一種習慣叫法。作為程序員,我們只要知道它們是什麼東西,沒有必要過多地考證這些名詞。
所謂代碼頁(code page)就是針對一種語言文字的字元編碼。例如GBK的code page是CP936,BIG5的code page是CP950,GB2312的code page是CP20936。
Windows中有預設代碼頁的概念,即預設用什麼編碼來解釋字元。例如Windows的記事本打開了一個文本文件,裡面的內容是位元組流:BA、BA、 D7、D6。Windows應該去怎麼解釋它呢?是按照Unicode編碼解釋、還是按照GBK解釋、還是按照BIG5解釋,還是按照ISO8859-1 去解釋?如果按GBK去解釋,就會得到"漢字"兩個字。按照其它編碼解釋,可能找不到對應的字元,也可能找到錯誤的字元。所謂"錯誤"是指與文本作者的本意不符,這時就產生了亂碼。
答案是Windows按照當前的預設代碼頁去解釋文本文件里的位元組流。預設代碼頁可以通過控制面板的區域選項設置。記事本的另存為中有一項ANSI,其實就是按照預設代碼頁的編碼方法保存。
Windows的內碼是Unicode,它在技術上可以同時支持多個代碼頁。只要文件能說明自己使用什麼編碼,用戶又安裝了對應的代碼頁,Windows就能正確顯示,例如在HTML文件中就可以指定charset。
有的HTML文件作者,特別是英文作者,認為世界上所有人都使用英文,在文件中不指定charset。如果他使用了0x80-0xff之間的字元,中文Windows又按照預設的GBK去解釋,就會出現亂碼。這時只要在這個html文件中加上指定charset的語句,例如:
<meta http-equiv="Content-Type" content="text/html; charset=ISO8859-1">
如果原作者使用的代碼頁和ISO8859-1兼容,就不會出現亂碼了
② 什麼是區內碼,機內碼,國標碼
1.區位碼(十進制)轉換成區位碼(十六進制)。
這里要把前兩個位換成十六進制,然後後兩位換成十六進制。
例如,某漢字的區位碼是5448,這樣把54轉換為16進制數36;再把位碼48轉換為16進制數為30,得到十六進制數3630。
2.國際碼=區位碼(十六進制)+2020H
例如,3630H+2020H=5050H
得到國標碼GB2312
3.漢字機內碼=國際碼+8080H
機內碼就是5050H+8080H=D0D0H
ASCII碼是八位的一個位元組
最高位為0,這樣可以區分和漢字編碼的區別。
Unicode是歐洲提出來的編碼。
如果大段的數據包中的位元組是大於A0A0H的雙位元組信息,可以初步認定為漢字內容編碼。
說明一下,漢字你在數據包中只能獲得機內碼。區位碼是輸入碼,不在計算機當中的,呵呵
③ 什麼是內碼
內碼是指整機漢字系統中使用的二進制字元編碼,是溝通輸入、輸出與系統平台之間的交換碼,通過內碼可以達到通用和高效率傳輸文本的目的。比如MS Word中所存儲和調用的就是內碼而非圖形文字。英文ASCII 字元採用一個位元組的內碼表示,中文字元如國標字元集中,GB2312、GB12345、GB13000皆用雙位元組內碼,GB18030(27,533漢字)雙位元組內碼漢字為20,902個,其餘6,631個漢字用四位元組內碼。
④ 一漢字國標碼是5E38H,其內碼是什麼,怎麼算
區位碼、國標碼與機內碼的轉換關系 方法: (1)區位碼先轉換成十六進制數表示 (2)(區位碼的十六進製表示)+2020H=國標碼; (3)國標碼+8080H=機內碼 舉例:以漢字「大」為例,「大」字的區內碼為2083 解:1、區號為20,位號為83 2、將區位...
⑤ 漢字內碼怎麼算
漢字內碼=國標碼+8080h
所以 內碼=DEC8h 選擇B
⑥ 機內碼、國際碼、區位碼之間如何換算
一般換算全部用十六進制。機內碼、國際碼是十六進制的,區位碼是十進制的。具體換算步驟:(H表示十六進制,D表示十進制)
1、將四位數的區位碼分為兩部分,兩位數一組。
2、將這兩個兩位數換算為十六進制,運用公式進行計算。
國際碼=區位碼(十六進制)+2020H
機內碼=國際碼+8080H
例如:某漢字的區位碼是2534。則25D=19H,34D=22H
則國際碼=1922H+2020H=3952H,機內碼=3952H+8080H=B9D2H
(6)內碼擴展閱讀
區位碼、國標碼與機內碼都是漢字的編碼形式,它們之間有著千絲萬縷的聯系,但其間的區別也是不容忽視的。
國標碼是基礎,指國家標准漢字編碼。即《信息交換用漢字編碼字元集(基本集)》,簡稱GB-2312。該字元集有漢字6763個。設有94個區,每個區94個位。每個漢字有一個固定的區位。
區位碼與國標碼的區別在於,在GB-2312中預留了一些空位,便於補充和擴展,經過擴展的區位碼字元數量及范圍就超過了GB-2312。而且台灣、香港、及日韓也是用區位碼的,但其區位號與大陸用的就完全不相同。
機內碼是為了避免ASCII碼和國標碼同時使用時產生兩義性問題,大部分漢字系統都採用將國標碼每個位元組高位置1作為漢字機內碼。這樣既解決了漢字機內碼與西文機內碼之間的二義性,又使漢字機內碼與國標碼具有極簡單的對應關系。
⑦ 5e38h的內碼是多少
國標碼為5E38,它的內碼是DEB8H。計算方式如下:
第一種:
1、5E38H是16進製表示的,需要先轉化為10進制再轉化為2進制。
轉化為10進制的公式是5*(16的3次方)+E*(16的2次方)+3*(16的1次方)+8*(16的0次方)=24376。
2、然後將24376轉化為2進制,是11111110 0111000。
在漢字的國標碼的這兩個位元組的最高位分別置1即得到該漢字內碼。
所以內碼是11111110 1111000=DEB8H。
第二種:
國標碼+8080H=機內碼
5E38+8080 = ?
5+8=13,D E+0=E 3+8=11,B 8+0=8
最後加H表示這是十六進制數,所以內碼:DEB8H。
(7)內碼擴展閱讀:
由於歷史、地區原因,有時一種文字會出現多種編碼方案,特別是漢字。
由於不同於系統內碼的字元不能在該系統中正常顯示,必須要進行字元的內碼轉換,即將非系統內碼的字元轉換為系統可以識別的內碼字元。
1、機外碼就是你外界輸入的字元,這個字元輸入後會有一個相對應的區位碼(就是一個94*94的棋盤格格,你輸入的漢子會對應裡面的一個格子,行+列就是我們這里的區+位)。
2、區位碼經過換算可以變成國標碼(所以區位碼→國標碼這一步只是表示轉換下而已)。
3、國標碼再經過換算可以變成機內碼(一般是16進制數表示)。
參考資料來源:網路 — 內碼
⑧ 內碼如何表示漢字
我來幫你吧:
區位碼、國標碼與機內碼的轉換關系
方法:
(1)區位碼先轉換成十六進制數表示
(2)(區位碼的十六進製表示)+2020h=國標碼;
(3)國標碼+8080h=機內碼
舉例:以漢字「大」為例,「大」字的區內碼為2083
解:1、區號為20,位號為83
2、將區位號2083轉換為十六進製表示為1453h
3、1453h+2020h=3473h,得到國標碼3473h
4、3473h+8080h=b4f3h,得到機內碼為b4f3h
三、小結:
字元編碼的兩種表示方式:ascii(字元的表示);gb2312(國標碼,漢字編碼)
⑨ 內碼外碼什麼意思呀
內碼是指整機漢字系統中使用的二進制字元編碼,是溝通輸入、輸出與系統平台之間的交換碼,通過內碼可以達到通用和高效率傳輸文本的目的。比如MS Word中所存儲和調用的就是內碼而非圖形文字。英文ASCII 字元採用一個位元組的內碼表示,中文字元如國標字元集中,GB2312、GB12345、GB13000皆用雙位元組內碼,GB18030(27,533漢字)雙位元組內碼漢字為20,902個,其餘6,631個漢字用四位元組內碼。
什麼是外碼。如果F與基本關系S的主碼Ks相對應,則稱F是基本關系R的外碼基本關系R稱為參照關系(ReferencingRelation)基本關系S稱為被參照關系(ReferencedRelation)或目標關系(Target Relation)。