計算機是如何處理中文的(八)

2021-07-28 11:06:45 字數 1533 閱讀 4849

在作業系統之外的軟體,都在此處稱為應用軟體。

本文以資料庫為例,說明應用軟體是如何支援中文的。

馮諾依曼體系,構造了「外存-

>

記憶體->cpu

」的體系結構。所以,資訊處理的乙個環節,就是儲存。資料庫要儲存資料,普通文字編輯器也要儲存資料,這樣,資訊基本上都要「持久化」儲存起來。

從外存到記憶體,檔案被開啟,資料被讀入,讀入後,就要被處理,這就有個識別的問題,計算機需要知道讀到記憶體裡的是什麼、該怎麼處理為好。

如果資訊要被傳輸到客戶端,那麼,資訊就有個網路傳輸的過程(如果是網路傳輸,因涉及兩個作業系統,兩頭可能支援的編碼不一樣,則資料傳輸就可能存在乙個「編碼轉換」的過程)。

一些資訊被處理後,是要顯示給使用者看的,所以又有了輸出的過程。

所以,這些過程,在資料庫中都存在。我們一起看看

kingbaeses

資料庫中同語言有關的過程是怎麼樣的。

操作步驟

說明

初始化資料目錄(指定「

--locale

」引數)

告訴作業系統,對待本資料目錄要以什麼

locale處理

建立資料庫,指定資料庫的編碼

告訴資料庫管理軟體(

kingbase

資料庫引擎),本庫中的資料,是以什麼編碼方式儲存和需要用相應的編碼規則解釋

建立表,插入資料

查閱客戶端對應的環境中,

locale

的設定,告知伺服器,如果伺服器的庫的編碼(上一步中指定的編碼)和客戶端不一致,按以下方式處理:

1)當客戶端和伺服器端編碼相同,不需要轉換;

2)當客戶端編碼是

ascii

時,無論伺服器是什麼編碼都不需要進行轉換;

3)當伺服器編碼是

ascii

時,無論客戶端是什麼編碼都不需要進行轉換;但是目前對於

ascii

不相容字符集(例如

gbk和

gb18030

)中的非

ascii

字元,伺服器不接受,會報錯。

4)其它情況按照伺服器中存在的字符集轉換規則進行轉換,如果系統中不存在兩種字符集之間的轉換,則報錯。

查詢表

本步驟除了有上一步涉及的伺服器向客戶端的編碼轉換問題外,還有的是結果集的顯示的問題。

結果集的顯示,此時依賴於客戶端的

locale

環境。如客戶端為的

locale

支援gbk

,查詢出來的資料的編碼客戶端不支援或不相容,則從

gb18030

庫中查詢出

gbk中不存在的字元,則介面顯示的就會是亂碼。

所以,我們可以有個結論是:應用軟體自己也可以支援對各種編碼(實則是支援各種字符集的處理)的處理。典型的例子還有:

瀏覽器選單項中「檢視」選單項有「字元編碼」子選單,提供了對多種字符集的解釋支援。

通常的郵件客戶端,如

foxmail

,選單項「檢視」的子選單「編碼」也提供了對多種字符集的解釋支援。

型別轉換越界計算機如何處理

物件的型別定義了物件能包含的資料和能參與的運算,其中一種運算被大多數型別支援,就是將物件從一種給定的型別轉換 convert 為另一種相關型別。當在程式的某處我們使用了一種型別而其實物件應該取另一種型別時,程式會自動進行型別轉換。此處,有必要說明當給某種型別的物件強行賦了另一種型別的值時,到底會發生...

計算機是如何啟動的

感謝作者!從開啟電源到開始操作,計算機的啟動是乙個非常複雜的過程。我一直搞不清楚,這個過程到底是怎麼回事,只看見螢幕快速滾動各種提示.這幾天,我查了一些資料,試圖搞懂它。下面就是我整理的筆記。零 boot的含義 先問乙個問題,啟動 用英語怎麼說?回答是boot。可是,boot原來的意思是靴子,啟動 ...

計算機是如何啟動的?

從開啟電源到開始操作,計算機的啟動是乙個非常複雜的過程。我一直搞不清楚,這個過程到底是怎麼回事,只看見螢幕快速滾動各種提示.這幾天,我查了一些資料,試圖搞懂它。下面就是我整理的筆記。零 boot的含義 先問乙個問題,啟動 用英語怎麼說?回答是boot。可是,boot原來的意思是靴子,啟動 與靴子有什...