GB18030字元編碼格式和點陣字型檔

2021-10-09 18:59:48 字數 2189 閱讀 4670

中國國bai家標準gb2312就是簡體中文字符集;台灣計算機界使用的big5碼是繁體字中文字符集;日本的jis x0208標準是日文漢字字符集;南韓的ks c5601是南韓漢字字符集。ansi(美國國家標準學會)推出了一種雙位元組編碼的標準,將上述三國四方的字符集加以統一,稱為 ansi 編碼。在簡體中文作業系統中,ansi 編碼代表 gbk 編碼;在日文作業系統中,ansi 編碼代表 shift_jis 編碼。 不同 ansi 編碼之間互不相容,在國際間資訊交流時,無法將屬於兩種語言的文字,儲存在同一段 ansi 編碼的文字中,沒有解決不同字符集的相容問題。unicode(萬國碼、統一碼、單一碼)則給世界各種語言的每個字元提供了乙個唯一的數字,使資訊字元能夠貫穿多個平台,語言和國家。

在notepad++中測試如下**:

#include

"stdio.h"

intmain

(void

)

以utf-8無bom格式編碼,輸出

以ansi格式輸出(與韌體內lcd的子模表一致)

記錄乙個疑問:ptest ++為什麼先輸出再加?

utf-8不是固定字長編碼的,而是一種變長的編碼方式。它可以使用1~4個位元組表示乙個符號,根據不同的符號而變化位元組長度。這是種比較巧妙的設計,如果乙個位元組的第一位是0,則這個位元組單獨就是乙個字元;如果第一位是1,則連續有多少個1,就表示當前字元占用多少個位元組。

utf-8, unicode, gb2312格式串轉換之c語言版

gb18030是對gb2312的擴充套件,其編碼長度由2個位元組變為1~4個位元組。

*分享乙個16x16的18030點陣字型檔。

字型檔形式:豎向8點組字,左邊點取低位

寫的順序:先上而下,從左往右

取字順序:左上角-->右上角-->左下角-->右下角

0 0

| |

| | --->共8bytes 先寫這8/16個位元組

7 7

0 0

| |

| | --->共8bytes 後寫這8/16個位元組

7 7

需要補充的一點是:asiic碼表128個字元,其中33個字元無法顯示(這是以現今作業系統為依歸,但在dos模式下可顯示出一些諸如笑臉、撲克牌花式等8-bit符號),且這33個字元多數都已是陳廢的控制字元,控制字元的用途主要是用來操控已經處理過的文字,在33個字元之外的是95個可顯示的字元,包含用鍵盤敲下空白鍵所產生的空白字元也算1個可顯示字元(顯示為空白)。ascii碼對照表

因此字型檔並不是從asiic表第乙個字元開始取模,而是從0x20開始。這裡以字元』1』為例,看下字型檔的取模方式。

使用ultraedit或其他工具開啟字型檔bin檔案。字元』1』為ascii碼,(8/8)*16=16,使用16個位元組表示。『1』-0x20=0x11,一行正好16個位元組,我們直接看110h即可。

為了效果直觀些,使用excel圈出乙個8*16的**,將字模依次填入,可得下圖:

字型檔連線:stm32l051_w25qxx_寫入字型檔。

gbk編碼具體解析

gb18030編碼格式了解和應用

編碼格式經常用的有utf 8 gbk,之前用eclipse開發的時候預設格式就是gbk,現在換成as後預設格式變成了標準的utf 8。最近做銀行業務發現其報文用16進製制字串轉成byte陣列後,再分別用utf 8和gbk轉碼都會有亂碼的情況出現。使用utf 8轉碼時由於全部是亂碼因此判定utf 8編...

輸出GB 18030 2005字元編碼(Lua)

按單位元組 雙位元組 四位元組及編碼順序輸出gb 18030 2005中規定的中文圖形字元二進位制編碼,不包括保留區字元和使用者自定義區字元。考慮到最近 資訊科技 中文編碼字符集 修訂版送審稿通過專家審查,採用lua指令碼實現以方便修改。function isindoublebytesuserdef...

c 實現GB2312和UTF8字元編碼方式的轉換

c 實現gb2312和utf8字元編碼方式的轉換 public string utf8togb2312 string str catch exception ex unsupportedencodingexception ex public string gb2312toutf8 string st...