在读完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,有兴趣的人可以验证一下!