文字編碼與XML及其它

2021-05-24 06:41:01 字數 3210 閱讀 3816

文字編碼

當計算機出現後,人們就想辦法將文字儲存到計算機中,就得想方設法將文字表示成由二進位制組成的編碼,最開始的比較成熟的編碼就是

ansi

編碼,它使用乙個位元組,即

8個二進位制位表示乙個字母,這樣就可以表示多達

256個字母,這對於只有

26個字母的西文來說足夠用了,除了字母外,還可將像標點符號、控制符等加入到其中。

當計算機產業發展起來後,當世界上其它地方的人們開始使用計算機後,這種編碼顯示出了它的侷限性,包括漢字在內的東方文字根本無法用乙個位元組編碼,這是早期編碼設計人員沒有想到或者不想去考慮的事,可以用兩個字概括-「自私」。所以世界各國為了讓計算機服務於自己的國家,設計了符合自己國情的編碼,比較成功的有我國大陸的

gb2312

碼和台灣的

big-5

碼。gb2312

碼實現起來很簡單,就是用

1個位元組表示西文字母,用

2個位元組表示漢字。但其中的編碼有一些規則,這裡沒有足夠的篇幅來論述。

當幾乎每個國家都使用自己的編碼系統,國與國之間的交流又成了問題,就像英語不好的人和老外談生意一樣,需要帶乙個翻譯。計算機需要安裝乙個編碼轉換器,非常不方便。最後有人(國際標準化組織)出來搞了乙個全球統一的編碼,這就是著名的

unicode

,我把它看成是宇宙編碼的簡稱(

universe code

),實際也是這個意思,這個編碼可以使用多達4個位元組來編碼乙個字元,再加上一些限制,這樣,則可以容納

1114112

個字元,這樣,足夠編碼世上所有字元。

在實際絕大多數應用中,只需要用兩個位元組來編碼就夠了,所以

unicode

有許多在實際中應用的子集,還有一些它的壓縮編碼等。我們在程式設計過程中用的一般是由兩個位元組編碼的

unicode

。值的一提的是,我國國內使用的

gb18030

編碼也是

unicode

的乙個子集,而

gb2312

又是gb18030

的乙個子集。

之後我們再提乙個比較特別的壓縮編碼,在提這個編碼以前我們再說一說一種應用廣泛的文件技術-

xml。

xml

技術

我們的計算機每天都要處理和文字有關的東西,不只是平面的文字,還有立體的文字,我稱它們是平面的還是立體的,是根據這些文字的用途,如果只是一篇文章、一條新聞報道,我們可以稱它為是平面的,從哪個角度來看都是一樣的。如果說我們要在網上發布一商品的資訊,包括它的廠家資訊、產品的各種引數,產品的**等等,那麼這條資訊就是立體的文字,每個人看它的角度都不一樣,有人看重品牌,有人看重**,有人看重它的某項技術引數。如果我們把這條資訊按照文章的格式發布出去,就無法滿足以上這些人的要求,因為我們無法從平面的文字中提取這些資訊以供這些人搜尋。所以要展示立體的文字,就得使用展示立體文字的技術,這種技術之一就是

xml。我們平常打交道最多的文字-網頁,就是使用這種技術的子集來構建的。之所以計算機能夠理解這些文字並且知道如何處理它們,就是因為它使用了這項技術。

不僅如此,除了文字之外,

xml還能夠處理包括音訊等多**資料,所以說它是「文件處理技術」是有些狹隘了。總之,我個人理解能力有限,無法全面理解博大精深的

xml技術,請各位讀者牛人們獨自體會吧。

如此好的技術,總是老外先於我們搞出來,作為國人,心有不甘啊。沒有研究的福分,總還有使用它的幸運。下面就我在工作之中使用

xml技術的心得作下論述。

問題及解決

在乙個裝置管理系統中,我們要把一台裝置表示成由許多材料組成的。起始時,我想把這種關係儲存到資料庫中,建立乙個資料表,每一組字段表示一種材料,不是乙個,是一組,包括這種材料的名稱、型號、需要使用的數量等。這就需要

3個字段,假設一台裝置需要使用三種材料,那麼這台裝置對應的資料記錄就需要

9個字段。事實上每台裝置可能用到的材料有幾十種甚至上百種,這樣,我們就無法建立幾百個欄位來容納這台裝置了。於是,我想到了

xml技術。我們用一篇

xml文件來容納這百十種材料,完全是小菜一碟。然後將這篇

xml文件的內容作為乙個裝置結構欄位的內容儲存到資料庫中,這樣,問題就輕而易舉地解決了。

當我這樣想,並且著手這樣去做的時候,還有一些瑣碎的問題在前面等著呢。

在window

下使用vb

程式設計,需要使用

msxml

這個元件來建立

xml文件,將裝置所需要的各種材料以

xml節點的方式組織進文件中。當我建立好這個文件,將這個文件的文字儲存進資料庫中後,再將資料庫中的這個字段拷貝出來貼上到文字文件中時,記事本中本應當顯示中文的地方卻顯示為亂碼。

經過多方查詢資料,最後發現,我們經常看的文字文件是

gb2312

編碼的,而

xml文件是

utf-8

編碼的。這就是我們之前所提到的那個「比較特殊」的編碼,就是這個編碼壞的事。兩種編碼不一樣,所以直接用剪貼簿拷來拷去,就使得其中的中文變成了亂碼。

為什麼當

unicode

成為全球統一編碼之後,西方人又搞了一套

utf-8

編碼呢,是因為

unicode

資料量太大了,他們經常使用的西文字元用乙個位元組就搞定了,幹嘛還要用兩個位元組來表示呢,於是,他們設計的這種編碼,其中的西文字元編碼又退回到最初的

ansi

編碼。而中文字元在這種編碼體系中卻要占用

3個位元組!也許這和它的設計方法有關,總之,我看到這種編碼方式第一感覺就是,它的設計者真是損人利已啊!比自私的

ansi

編碼要可惡得多。這種編碼我第一次使用它就造成了一天多的工作延誤。

最終,我使用微軟的編碼轉換函式搞定了編碼,後又使用了寫二進位制檔案的方式將資料庫字段轉換成臨時的

xml檔案(寫文字檔案的方式根本無法使用),以供分析裝置表中的材料。直到完成分析工作,再將臨時

xml檔案刪除。

一點反思

老外將xml技術弄成

utf編碼的,我們也完全可以把它弄成符合我們利益的

gb2312

編碼的,但是這樣我們還得寫自己的

xml解析器才行,我們有幾個人會寫,或者有哪些公司願意花費精力來寫,這些都是問題。沒有**遠矚的魄力,只看重眼前利益,我們也許永遠只能使用他人的先進技術而受制於他人。

字元編碼與文字基礎

一.字元編碼基礎知識 1.計算機硬體包括cpu 硬碟 記憶體,其中cpu負責從記憶體中讀取指令並解碼執行。作業系統和應用軟體執行時都是先把程式載入到記憶體中,然後應用程式通過呼叫作業系統提供的介面,來間接實現硬體的使用。2.文字編輯器儲存原理 應用程式載入到記憶體中,先將編輯的內容儲存在記憶體中,然...

Vue文字轉編碼與解碼

最近用到的,文字輸入框是乙個元件,在後台管理系統中儲存,關鍵 如下 el form item v if modelform.type modelform.type aboutus label prop desc span style text line center 企業簡介 span tinymc...

URL中文編碼與文字中文編碼的關係

寫在前面 系統環境 windows 10 軟體環境 360急速瀏覽器11.0,核心版本69 基於chromium 在使用爬蟲過程中,我們常常要對url位址進行處理 在發包時對字串進行編碼 在接收資料時,對引數進行解碼。由於現在常見的瀏覽器已經都對url中的字元進行了解碼,因此在使用瀏覽器時,位址列中...