字元編碼之實踐篇

2022-04-18 11:05:33 字數 1324 閱讀 6859

windows字元終端(cmd)內部已支援unicode,另外終端還可以顯性地支援設定另外一種編碼,中文作業系統中預設為gbk,可以通過chcp命令修改,也可以修改登錄檔設定預設編碼。

兩種修改方法:

chcp 65001:設定終端編碼為utf-8(如果只輸入chcp則顯示當前編碼)。chcp命令即是change code page的縮寫。

修改登錄檔:[hkey_current_user\console],修改

codepage的鍵值,輸入對應編碼的十進位制數即可.

列集中常見codepage 和國家對應關係:

codepage

國家(地區)或語言

437美國-ascii

936中國-gbk

950正體中文

65001

unicode-utf-8

python3直譯器預設將字串(將**檔案看成字串)轉換成unicode載入到記憶體並展示**輸出結果,因此windows終端預設就是可以顯示中文的。

python2直譯器使用的編碼則是使用了**檔案中宣告的編碼相同的編碼將**檔案載入到記憶體和輸出,所以要避免顯示亂碼,需要**中宣告的編碼與字元終端的編碼一致

python2的型別有str、unicode、bytes型別,str等同於bytes型別(主要用於支援、影音檔案等非字元類的二進位制格式檔案而增加的一種型別),str是顯示字元,bytes顯示二進位制,當為字元時,print會根據unicode編碼表找到對應二進位制對應的字元顯示。

python3只有str、bytes(不再有unicode型別,預設載入到記憶體都轉成unicode),版本3裡這兩種型別有明顯加以區分,str就是unicode格式字元,用於儲存與傳輸時都是bytes。字串為字元時,print不再根據編碼表查詢對應字元加以顯示,而是仍舊是輸出二進位制(十六進製制表示)

*****===萬國碼unicode與各個國家編碼之間的對應關係

以gbk中的漢字「中國」為例:

unicode輸出十六進製制:u'\u4e2d\u56fd',u表示unicode,每個漢字兩個位元組表示。4e2d在unicode表中查詢到漢字正是「中」,而對應的gbk編號為:g0-5650。然而這個數字跟實際gbk的編碼(\xd6\xd0)是對不上,那麼它們之間的對應關係是什麼呢?

分析一下d6d0,也是乙個十六進製制數,兩個位元組共16位,根據8421碼規則將其分成4個4位二進位制的組,將第二組和第四組二進位制數(這裡對應都是十六進製制d)的高位去掉[也可以看成是將兩個位元組中的二進位制最高位置零],也就是減掉8,得出的結果恰好就是5650。

結論:將unicode的編碼表中對應的gbk編碼的第二位和第四位數字加上8之後就是對應的gbk編碼。

敏捷測試之實踐篇

最近一直在想 敏捷測試 如何實施的事情,敏捷測試在敏捷開發中貫穿始末,涉及到了多種角色的參與 客戶 開發 設計 專職測試等等,每個角色承擔著不同的測試任務,客戶與設計可以進行驗證需求實現的測試,而開發進行 單元測試,專職測試人員進行詳細測試。我們這裡主要是來談談專職測試人員如何開展敏捷測試,其實這個...

DPI適配之實踐篇

使用如下方法來獲得當前縮放係數 float getdpifactor return s ndpi define multiplydpi nlen int nvol getdpifactor 對話方塊使用對話方塊字型大小來決定控制項之間的布局,它們通常不需要進行特殊修改,就能在高dpi裝置上工作。對話...

lambda表示式之實踐篇

之前對lambda 表示式的基礎進行過總結,現在就從實踐上進一步對它進行了解。看看它與委託 匿名函式的區別,以及它有什麼亮點!傳統的呼叫委託的示例 static void finddelegate predicatefindpredicate new predicate isbookcategory...