Sean's Note: 6月 2013

2013年6月26日 星期三

ASCII、ANSI、Unicode、UTF-8 的差別

SBCS (Single Byte Character Set)

  • ASCII
    ASCII 是美國於 1967 年發表的一套電腦編碼系統,主要將 26 個英文字母用 1 個 byte 來表示。加上數字與其他的字元符號,總共有 128 個字元,後來又衍生了有 256 個字元的 extended ASCII  (詳見: ASCII Table)。
  • ANSI
    ANSI 是 American National Standards Institute 的縮寫。內容就是 ISO 8859/x 加上額外的字元,也是用 1 個 byte 來表示,比起 ASCII 少了一些控制字元,卻多了一些重音字元 (accented characters) (詳見: ANSI Table)。

MBCS (Multi-Bytes Character Set)

  • 在 Window 系統裡,根據不同語言的系統有不同的預設值,可到 "控制台" -> "地區及語言" -> "系統管理" -> "非 Unicode 程式的語言" -> "變更系統地區設定..." 做更改。例如選擇 "中文 (繁體,台灣)" 時,使用的是 Big5 編碼; "中文 (簡體,中國)" 是用 GB2312 編碼;"日文 (日本)" 則是 Shift-JIS 編碼。

    (詳見: Code Page Identifiers)

    為什麼會有這些額外的編碼? 當然是因為早先的 ASCII 只定義了英文字母,可是其他國家也 想要用電腦啊! 而且每個國家有各自的文字,於是各自發展了以 ASCII 衍伸的編碼,用 128 之後來開始定義自己的文字。

    附註:在程式語言裡的 ANSI String 、ATL 的 macro A2W 和 W2A 指的是 ANSI/MBCS 兩者的集合。 

Wide Character 

  • Unicode
    原全名為 Universal Multiple-Octet Coded Character Set,又稱我們熟知的 Unicode 萬國碼。原先一個國家一套編碼,會造成用日文編碼的程式無法正確在中文系統上顯示,為了解決這樣的問題,Unicode 就自然的誕生了。Unicode 用 2 個 bytes 來表示所有國家的字母及字元  (可表示 65535 個字), 而原先的 ASCII 碼與 Unicode 的表示仍然相同,只是 Unicode 多用了一倍的記憶體空間。
  • UTF-8 (8-bit Unicode Transformation Format)
    是一種針對 Unicode 的可變長度字元編碼,以 1~3 個 bytes 來表示一個字元,如此大大的減少了記憶體空間的使用量,便於在網路上更有效率的傳輸。
    這是一個 Unicode 與 UTF-8 的轉換表:

UnicodeUTF-8
0000 - 007F0xxxxxxx
0080 - 07FF110xxxxx 10xxxxxx 
0800 - FFFF
1110xxxx 10xxxxxx 10xxxxxx

用一個簡單的例子來說明如何轉換,"我" 的 Unicode 是 6211,座落於表中的第三列,以二 進位表示即 0110 0010 0001 0001,依序從後面補置表中的 x 處,得到
11100110 10001000 10010001,再轉成十六進位, E6 88 91 即是 "我" 的 UTF-8 編碼。

2013年6月21日 星期五

[CSS] 將 div 水平置中

我們可以用兩個 div 來達成,c2 是我們要置中的 div, 先將要置中的 c2 用 c1 包起來,

並將 c1 的 width 和 left 都設為 50% (即頁面的一半寬度),再將 c2 左推 50% 的寬,

若是使用絕對位置 absolute ,記得將 width 設為 100%,此時就達成置中了的效果了。

.c1
{
    position:absolute;
    width:50%;
    left:50%;
    border:2px solid blue;
}

.c2 /* relative */
{
    position:relative;
    left:-50%;
    border:2px solid red;
    text-align: center;
}

.c2 /* absolute*/
{
    position:absolute;
    left:-50%;
    width:100%;
    border:2px solid red;
    text-align: center;
}

[CSS] position 和 width 的關係

.class1
{
    position: absolute;
}

當 position 設為 absolute 時,width 的預設值為內容的寬。

.class1
{
    position: relative;
}

當 position 設為 relative時,width 的預設值為父容器的寬。




2013年6月20日 星期四

[TortoiseSVN] Revert Changes From This Revision

在使用版本控制時,有時我們會想要 roll back 某一個 revision,譬如說想要

 roll back revision 12001:

12010
12007
12001
12000

這時只要 Show log 將 Log Messages 的 Dialog 給叫出來, 選取該 revision 按滑鼠右鍵,

選擇 Revert changes from this revision,就可將該 revision 的 code 或檔案給移除或復原,

要注意的是這改變的是 Local 端的程式,想要更新 Server 端就得在 Commit 一次。