主頁spacer>軟體支援>關於文本編碼的一些基本要點

spacer

統一碼(Unicode)

為了代表文件中的文本字符,內碼數值與字符間必須使用某種「映射」或對應。視乎正在使用的語言等因素,不同的字符集須要其獨特的映射,如中文等的大字符集須使用多個字節來代表每個字符。如果一台電腦讀取的數據的編碼映射與預計的不同,便會出現一連串問題。因此要正確處理文本,確定它們之間的各種映射和字符編碼轉換是必要的。

過去大多數字符集和字符編碼方案通常只是支持一種語言或一小部分的語言,多語種軟體歷來皆使用特別的方法來支持多個字符編碼。簡單的解決方案應是把所有常用的語言和符號的字符合併成一個單一的通用編碼字符集,統一碼(Unicode)正是這樣的一個普遍編碼字符集。因為統一碼包含最常見的字符編碼,它有利於數據使用單一的編碼字符集。


UTF-8,UTF-16,UTF-32 及 BOM

統一碼數據有幾種可能的表述,包括 UTF-8,UTF-16 和 UTF-32。UTF-8 在網絡上是最常見的,Java 和 Windows 使用 UTF-16,Linux 和各種 Unix 系統如 Mac OS X 則使用 UTF-8 和 UTF-32。它們之間的轉換以算法為基礎,快速和無損,故可以很容易地支持多種格式的數據輸入或輸出。無論 Mergemill Pro 在 Windows 或 Mac OS X 上運行,它總是使用 UTF-8 在用戶文件內儲存數據及經緩存文件處理數據。

UTF-16 和 UTF-32 使用的代碼單元長分別是兩個和四個字節。這些 UTF 有三項形式細分:BE,LE 和無標記。BE 形式使用 big-endian 字節序列(最高字節在前),LE 形式使用 little-endian 字節序列(最低字節在前),無標記的形式使用 big-endian 字節序列,但可能在文件的開頭包括一個字節順序標記(BOM),以提示實際使用的字節序列。BOM 是用戶不可見的。

UTF-8 有一些重要優點。其一是它保留了 ASCII。UTF-8 只使用 ASCII 字節代表 ASCII 字符。在任何以 ASCII 字符作為語法字符的環境下,例如標記語言,這優點便更為重要。UTF-8 的另一個優點是於其最常見的應用中,BOM 是不必要的。由於 UTF-8 被解釋為一連串單一字節序列,故沒有使用 16 位或 32 位代碼單元的 endian 問題。UTF-8 有使用的 BOM 皆與字節順序無關。它只被用以將 UTF-8 與其他編碼區別。

要了解更多,請瀏覽 unicode.org 的常見問題(英文)網頁。


文字編碼和 Mergemill Pro

Mergemill Pro 可以正確讀取任何文本編碼的模板,只要其相關的作業設定正確,因為 Mergemill Pro 會將讀取的模板先轉換成 UTF-8 字符編碼,然後再解析。這使所有標籤都成為 Mergemill Pro 可正確解讀的 ASCII 碼。但你仍有兩件事情需要確保。第一是要使用一個適當的文本編輯器來創建和編輯你的模板,以避免插入破壞 Mergemill 標籤語法的不可見字符。第二是使用簡單的英語(ASCII)符號構建 Mergemill 標籤。Mergemill Pro 可解析 "<?[欄名]?>",但不會視使用中文符號的 "<?〔欄名〕?>" 為佔位欄標籤。

提供數據的源檔案更需謹慎處理。BOM 是得多問題的常見原因。如果在你的 CSV 檔案的首個數據值是以雙引號括起來,BOM 便一定會破壞 CSV 格式,因為它使開始雙引號變為數據值內的一部分,而 CSV 格式要求此等雙引號必須通過雙雙引號轉義。遺留在第一個數據值後端的雙引號也有相同問題。

即使 CSV 檔案中的第一個數據值不包含逗號,換行符或雙引號,問題仍會發生。你雖不必將數據值放置在雙引號之間而能避免上述問題,但是 BOM 卻成為第一個數據值的一部分,與真實數據值在所有地方一併被使用。如果 CSV 文件被指定包含標題行,第一列的標籤名稱因為 BOM 的存在將不能匹配。這些問題也可能發生在以製表符分隔的檔案。

如果你需要使用帶 BOM 的源數據檔案,你有三個選擇:

  1. 先轉換文本編碼,然後才讀取數據來生成輸出。
    • 創建一個只含單一佔位欄的模板,如 <?[編碼轉換]?>
    • 建構一個簡單的作業使用該模板,以源文檔的原來編碼及純文本格式將其讀入。
    • 以沒有 BOM 的文本編碼輸出檔案。
    • 你應該使用相同的源文件檔名和副檔名儲存檔案至一個不同的檔案夾。
    • 使用巳經轉換文本編碼的檔案作為數據源產生輸出。
  2. 使用 XML 格式。
  3. 使用 Mergemill 數據標記。
    • 在 Mergemill Pro 設定數據源為純文本。
    • 以 Mergemill 數據標記「包裹」數據值,如 [欄名]...[/]
    • 以 Mergemill Pro 的擷取過濾器提取數據值。

Mergemill Pro 接受純含單一網址列表的文檔作為數據輸入源,並對待它如同一個內含檔案的檔案夾。列表中的每個網頁提供了數據饋送中的一個數據流。你可以指定一個網址列表的文本編碼,Mergemill 會假設列表的所有網頁皆使用同一文本編碼。如果網頁有不同的文字編碼,你便需要把它們包含於不同的網址列表。

spacer

返回頁首

軟體功能spacer::spacer下載專區spacer::spacer購買spacer::spacer軟體支援spacer::spacer視頻教程spacer::spacer標籤指南spacer::spacer網站導覽


版權所有 · 不得轉載 © 2001-2017 Cross Culture Ltd.