程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> pinyin.c與Unicode漢字編碼表 對應起來看

pinyin.c與Unicode漢字編碼表 對應起來看

編輯:關於C

Unicode漢字編碼表(一部分)

U+ 0 1 2 3 4 5 6 7 8 9 A B C D E F
-----------------------------------------------------
4e00 一 丁 丂 七 丄 丅 丆 萬 丈 三 上 下 丌 不 與 丏
4e10 丐 丑 丒 專 且 丕 世 丗 丘 丙 業 叢 東 絲 丞 丟
4e20 丠 両 丟 丣 兩 嚴 並 喪 丨 丩 個 丫 丬 中 丮 丯
4e30 豐 丱 串 丳 臨 丵 丶 丷 丸 丹 為 主 丼 麗 舉 丿
4e40 乀 乁 乂 乃 乄 久 乆 乇 麼 義 乊 之 烏 乍 乎 乏
4e50 樂 乑 乒 乓 喬 乕 乖 乗 乘 乙 乚 乛 乜 九 乞 也
4e60 習 鄉 乢 乣 乤 乥 書 乧 乨 乩 乪 乫 乬 乭 乮 乯
4e70 買 亂 乲 乳 乴 乵 乶 乷 乸 乹 乺 乻 乼 乽 乾 乿
4e80 亀 亁 亂 亃 亄 亅 了 亇 予 爭 亊 事 二 亍 於 虧
---------------------------------------------------

pinyin.c(這裡面存的是常用漢字拼音首字母)

// unicode 中漢字的范圍[\u4e00 - \u9fa5]。。這裡是一部分

#define HANZI_START 19968

#define HANZI_COUNT 20902


static char firstLetterArray[HANZI_COUNT] =

"ydkqsxnwzssxjbymgcczqpssqbycdscdqldylybssjgyqzjjfgcclzznwdwzjljpfyynnjjtmynzwzhflzppqhgccyynmjqyxxgd"

"nnsnsjnjnsnnmlnrxyfsngnnnnqzggllyjlnyzssecykyyhqwjssggyxyqyjtwktjhychmnxjtlhjyqbyxdldwrrjnwysrldzjpc"

"bzjjbrcfslnczstzfxxchtrqggddlyccssymmrjcyqzpwwjjyfcrwfdfzqpyddwyxkyjawjffxjbcftzyhhycyswccyxsclcxxwz"

"cxnbgnnxbxlzsqsbsjpysazdhmdzbqbscwdzzyytzhbtsyyfzgntnxjywqnknphhlxgybfmjnbjhhgqtjcysxstkzglyckglysmz"

"xyalmeldccxgzyrjxjzlnjzcqkcnnjwhjczccqljststbnhbtyxceqxkkwjyflzqlyhjxspsfxlmpbysxxxytccnylllsjxfhjxp"

"jbtffyabyxbcczbzyclwlczggbtssmdtjcxpthyqtgjjxcjfzkjzjqnlzwlslhdzbwjncjzyzsqnycqynzcjjwybrtwpyftwexcs"

。。。。。。

。。。。

char pinyinFirstLetter(unsigned short hanzi)

{

int index = hanzi - HANZI_START;

if (index >= 0 && index <= HANZI_COUNT)

{

return firstLetterArray[index];

}

else

{

return hanzi;

}

}

-------------------

這個函數主要基於一個巨大的c語言char數組,把unicode字符集中所有中文的拼音首字母都映射進去了。

pinyinFirstLetter基於這麼一個簡單的原理:我們知道,在Objective C語言中,字符串是以unicode進行編碼的。在unicode字符集中,漢字的編碼范圍為4E00 到 9FA5 之間(即從第19968開始的20902個字符是中文簡體字符)。我們把這些字符的拼音首字母按照順序都存放在一個char數組中。當我們查找一個漢字的拼音首字母時,只需把這個漢字的unicode碼(即char強制轉換為int)減去19968,然後用這個數字作為索引去找char數組中存放的字母即可。


----------------------------------------- 4e00對應的就是19968/一。。。。4e01 對應的就是19969/丁。。。4e02對應的就是19970/丂。。。。。類推。。。。



  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved