2007-10-22

社會組科技須知 - 電腦與字

台灣的教育制度會從國中開始把學生分成“社會組”(”文組“)跟“自然組”(”理組“)。目的好像是讓學生較早開始專心走其中一個方向,可以在這個專長達到較高的水準,因為不用花時間學其它方面的事。不過,這個做法也有缺點:每一組缺另外一組專長的基本知識。雖然有人會說這當然是這種措施的結果,某一方面根本就是目的。但是我在我的工作天天接觸社會組的人,發現他們其實缺很多對我來說算是常知的基礎。而且,這些缺乏會導致很多不便。社會組的人在“科技”方面很容易被騙,而且也不太有辦法用2007年的時候普遍的周邊科技。所以我想在這個“社會組科技須知”系列簡單地解釋一些“科技”基礎。重點是幫助語言相關的人多了解他們周邊的“科技玩具”,主要是因為我希望我的學生不只“會語言”,而有辦法應用。這次的題目:電腦與字。

今年(至少在我的世界)2007年。所以,如果我要寫文件,我會用電腦。(OK,我快二十年前已經這樣做,主要是因為我寫的字太難看。)筆譯也會用電腦,不只為了寫目標語言的文件,原來的文件根本已經是電子檔。不過,台灣的大學跟學院怎麼教筆譯?上課時發一張紙,叫學生在另一張紙上寫他們翻譯版本 - 可用手寫。

如果那些學生畢業之後想幫一家公司翻一些網路上要用的文件,他們可能很快就遇到一個很痛苦的問題:亂碼。他們花不少時間翻文件,存檔,送出去,但是公司完全沒有辦法使用。為什麼?

小時候,我們上課的時候可能要送一個小小的信給教室裡的另一個同學。如果被老師發現,老師會把我們的信拿走,而且會看它。為了偽裝內容,我們用一個簡單的表格,一邊列字母表所有的文字,另一邊再列一樣的字,但是亂改順序,像這樣:

A B C D E F G H I J K L M
Q W E R T Y U I O P A S D

N O P Q R S T U V W X Y Z
F G H J K L Z X C V B N M
(我承認這個順序不太亂,但是大部分的老師們還是不會“破”這個加密方法。)兩邊的學生必須有同樣的表格,而且千萬不可以讓老師發現它。用這個表格,原來一句"see you after school"會變成"ltt ngx qyztk leiggs",但是收信的學生因為有同樣的表格會知道真的意思。在用拼音文字的國家,學生可以這樣做,在台灣需要的表格可能較大。(不過,這裡有一種東西叫注音符號……)

為什麼要說這個故事?因為電腦用一樣的做法,它只有兩個地方不一樣:電腦用的表格不是秘密,而是公開的標準。而且,電腦的表格只有一邊會有文字,另一邊都是數字。電腦本身只能處理數字,而且原則上只能處理位元。不過,因為there are only 10 kinds of people in the world: those who understand binary, and those who don't,我們在這裡還是用對人比較容易了解的數字。

早期的可以顯示文字的電腦用一個叫"ASCII"的表格。如果我們在那種電腦上寫"World",記憶體裡面電腦會記錄"87 111 114 108 100"。So far, so good. 不過,這個ASCII表格好像沒有包含德文的"Ö",法文的"ç"或丹麥文的"Ø"。那些國家的人被叫要用ASCII表,沒有辦法用到自己的語言需要的一些額外的字,當然有一點點不高興。所以,他們建立自己的表格:他們保留原來ASCII裡面已經有的文字,然後把一些他們覺得不那麼重要的符號換成自己需要的文字。

不過…… 如果我們看這個新的表格,我們會發現上面舉例的三個文字其實都有同樣的數值:92。當時,人還沒有想到網際網路或全球化,每一個國家做它自己的事。如果當時要列印,一定要確認在印表機上有沒有設好“編碼”。如果有設成丹麥文,但是要印德文的文章,德文的"äöü"就變成"æøå" - 不好玩。所以,後來有一些大一點的表格,但是這些表格還是最多只能包含200多字,不可能包含世界所有的拼音文字。所以,如果一台電腦要有辦法用多一些語言的字,它必須“知道”多一些表格,也必須有辦法切換那些表格。用錯表格,就會有一些亂碼。

不過,這樣沒有辦法在同一個的文件用屬於不同“表格”的語言。而且,像中文或日文的漢字要怎麼辦?好像不只有200個字…… 沒錯,這些表格會大一點,數值也要大一點。不過,基本的問題還是一樣:如果電腦用錯表格(編碼),就會有亂碼。其實,我們現在會有辦法在同一個文件用所有的語言,而不需要”切換“,因為有一個真大的表格(盡量)包含這個行球上所使用的字。(不過,這裡也有幾種表格,用不同的編碼方式,最流行的是UTF-8。)

所以,如果我們要存一個文字當,我們可能要注意我們要用什麼編碼,特別是軟體本土化(L10n)的時候。但是還有一個地方編碼錯誤造成很大的麻煩:網路上的HTML文件。原則上,每一個HTML文件(所以,每一頁,而且每一個frame也要)必須包含編碼資訊。十幾年前定的HTML規格要求這些設定。

如果按照HTML規格做,不管什麼語言,什麼作業系統或什麼瀏覽器,一定要正確地顯示出來。不過,”我會Frontpage“族從來沒有學HTML,而Frontpage的原始設定不會輸出標準的HTML。一些”目前只會support Microsoft“的廠商可能也要參考規格一下…… 所以,如果網頁上有亂碼出現,平常不是訪客電腦的問題,是提供那些內容的人在某一個地方做錯,所以訪客的電腦不知道現在到底要應用哪一個表格顯示字。

此外,這個網站用UTF-8,所以在一個文件使用多幾種語言也沒關系……

4 comments:

惠子 said...

你寫的很詳細,好像上計算機概念的課一樣.不過,只看這些文章,可能不夠知識.需要個人的延伸讀書.

dl7und said...

看這些文章不夠沒有錯,但是主要的真的是自己做。沒有碰過亂碼問題的人根本不會很了解我在說什麼。有碰過的人,希望下次可以用這些盡量解決問題。

Justine said...

那個加密的方法很像我在幾部電影裡看過的方法,有異曲同工的用處... (只不過電影裡的是軍事上使用的譯碼機...) 有碰過亂碼問題的人會知道你在說什麼, 我之前也不曉得問題出在哪。 我想, 遇到問題是想辦法找出問題再解決, 而不是一般人所"習慣"的方式 - "Just restore it..."

dl7und said...

真的加密會復雜“一點點”,但是如果“敵人”這方面不太強,我寫的這麼簡單的方法就好。

而亂碼…… 我在學校每周看到亂碼 ── 在校務系統。不過,那是因為一些電腦“專家”到2007年還沒有了解HTML的基礎。(HTML4的規格是1996年定的)還好我知道怎麼自己(零時)解決這個問題。但是那是不必要的麻煩,而且那時候按reset也沒有用……