中國國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...