給有志研究電腦技術者
今天講Unicode。
Unicode 有譯做萬國碼。我第一次認識Unicode,剛巧碰上網頁亂碼。用正﹙繁﹚體中文,做網頁,寫HTML,文字亂碼,頓成一埋垃圾,一文不值。又嘗過用text﹙.txt﹚格式儲存中文,打了數行,存檔一save,即造垃圾。Unicode可算解決亂碼之辦法。正體、簡體中文,皆適用Unicode。
身為讀者,用web browser瀏覽網頁,讀電郵,按web browser的view,再按character encoding,就會看到一系列編碼。那,哪個才用得上?正體中文可能是big5﹙大五碼﹚,簡體中文可能用gb2312﹙國標碼﹚。日文可能用Shift_JIS之編碼。選擇帶來麻煩,浪費時間。除了作者,讀者不會事先估計作者用了編碼甲,還是編碼乙。用Unicode就夠了,正體、簡體中文、日文,都能顯示。一般人一般使用,不做學術研究,Unicode非常有用。Unicode節省時間,令人不用估計文字所用編碼是甚麼。
CJK Unified Ideographs : To Infinity and Beyond一文,都講得幾富技術細節。CJK Unified Ideographs 合共二〇九三二字。由Unicode編號4E00至9FFF﹙十六進制Hexadecimal﹚皆是。
CJK Unified Ideographs統一字符,統一中國、日本、韓國的字符,官方說明,三地歷史源流相通,故中文歸類CJK Unified Ideographs。
寫電腦程式,尤其記得用Unicode,那就省卻轉碼之時間。
程式原始檔,用UTF-8﹙Unicode一個常用分支﹚儲存。標明用UTF-8編寫。
與資料庫取得或在資料庫寫入數據,皆標明用UTF-8。PHP和MySQL皆然。
建立資料庫,default預設用UTF-8。建立table表default預設用UTF-8。MySQL資料庫語言例如要用:CREATE DATABASE sample DEFAULT CHARACTER SET utf8。並用CREATE TABLE sampleTable (id INT AUTO_INCREMENT NOT NULL, PRIMARY KEY (id)) CHARACTER SET utf8 COLLATE utf8_general_ci。
和資料庫聯繫,記謹用SET NAMES utf8先於其它指令﹙query﹚。PHP頁面頂部註明mb_internal_encoding('UTF-8')。
PHP實例:
____________________
<?php
@ $db = new mysqli('serverIPAddressOrDomainName.com', 'UserName', 'Password', 'DataBaseName');
if (mysqli_connect_errno()){
echo "
Could not connect to database. Try again later, please.
";echo "
數據庫失去聯絡。請之後再試一次。
";} else {
$setUpConnection = 'yes';
}
if ($setUpConnection == 'yes'){
/************* >>>>>>>> UTF-8 connection below *********/
$query = "SET NAMES utf8";
$resultsUTF8Connection = $db->query($query);
if ($resultsUTF8Connection){
// success: do nothing
}else{
echo 'Error 錯誤';
exit;
}
/************* >>>>>>>> UTF-8 connection above *********/
} // if ($setUpConnection == 'yes'){
?>
____________________
HTML頁面head部分用<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>,確保讀者可享受web browser自動選UTF-8之便利。Web browser有機會用ISO-8859-1歐洲文字做預設編碼,令頁內文字亂碼。
HTML實例:
____________________
<html>
<head><meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<!-- *********Must use UTF-8 as charset because of the use of traditional / simplified Chinese characters*********-->
<title>Title 標題</title>
</head>
<body>
</body>
</html>
____________________
Office applications,OpenDocument format用UTF-8儲存text檔,用zip壓縮大小,成了.odt、.odp、.ods等檔案。UTF-8造福人群。
XML檔是文字檔,也用UTF-8儲存。OpenDocument所zip之內容是XML檔。
Unicode
參考:
CJK Unified Ideographs : To Infinity and Beyond
http://babelstone.blogspot.com/2007/07/cjk-unified-ideographs-to-infinity-and.html
Unicode例子:
http://www.code2000.net/UNI32001.HTM
PHP
http://www.ibm.com/developerworks/library/os-php-unicode/index.html
Hexidecimal
http://en.wikipedia.org/wiki/Hexadecimal
Uncode中日韓文字同源
http://www.unicode.org/notes/tn26/
No comments:
Post a Comment