在讀完The Joel Test: 12 Steps to Better Code之後,ㄚ琪繼續閱讀每個軟體開發者都絕對一定要會的Unicode及字元集必備知識(沒有藉口!),這一章對ㄚ琪來說衝擊較小,可能我們是東方人在電腦上要用Unicode的概念較強吧!
ㄚ琪只在這列一些重要的敘述:
PHP是個很普遍的web開發工具,不過它完全忽略字元編碼問題,嗯,但是正如課本的註解,PHP確實很快就有Unicode的支援了,而且ㄚ琪還用得很愉快說!
古老美好的無重音英文字母,我們有一個對應的編碼系統叫做ASCII,大家也很熟悉吧!
WordStar是如何地使用32到127的數字,課本另加了解釋,它在找字尾時只要檢查最高位元為1即可,否則得檢查下一個字元才能判斷,這個軟體在很久以前有聽過,但是沒怎麼在用,可想而知是對東方人很不便,倒是PE2用的很多!
不同的地方用不同的系統就叫做頁碼(code page),這觀念跟我們很久以前在談論Windows的頁碼是950是同一碼事。
charmap工具的使用,這什麼啊?還滿高興用的,結果才發現不就是字元對應表嗎?真沒什麼大學問!
確實可幫助瞭解A是U+0041,但如果沒有這個程式,就只有到Unicode網站看了!
Unicode Byte Order Mark的問題以前也困擾著我們存程式碼要存有BOM還是沒有BOM,這在不同作業系統會有差異喔!
有人發明了UTF-8這個絕佳的點子,真的是造就我們現在寫程式的方便,雖然有些就程式還得改一下以配合UTF-8的使用,新的UTF-8標準有空一定要好好去看一下!
常見的英文文字編碼有Windows-1252 (Windows 9x對西歐語言的標準)和ISO-8859-1又名Latin-1(也是用於西歐語言),這個問題也曾讓我在MySQL的Latin-1的問題中,搞了很久,浪費很多生命在這!
Postel’s Law中關於「發送時嚴謹,接收時寬鬆」的論點實在不是一個良好的工程原則,我想我最近碰到的Firefox Content Encoding Error的問題,就是這個吧!但是課本寫這個工程原則跟維基的有點出入?「Perhaps his most famous legacy is from RFC 793, which includes a Robustness Principle which is often labeled Postel’s Law: “be conservative in what you do, be liberal in what you accept from others” (often reworded as “be conservative in what you send, liberal in what you accept”).」這裡提到的是RFC 793而不是RFC 791,有興趣的人可以驗證一下!