Python3 要開啟、讀取檔案時,若不是 UTF-8,會需要輸入檔案的語系編碼,Python 會自動都轉換成 UTF-8 做操作。
如下範例:(現在會遇到 Big5 的,大多數都是 Windows 的 CSV)
with open(filename, encoding='Big5') as csvline: rows = csv.reader(csvline, delimiter=',')
但是有些來源是 Big5、有些是 UTF-8,就需要偵測語系編碼,要怎麼做呢?
個人筆記, 記錄關於 系統、程式、新聞 與 日常生活 等資訊
Python3 要開啟、讀取檔案時,若不是 UTF-8,會需要輸入檔案的語系編碼,Python 會自動都轉換成 UTF-8 做操作。
如下範例:(現在會遇到 Big5 的,大多數都是 Windows 的 CSV)
with open(filename, encoding='Big5') as csvline: rows = csv.reader(csvline, delimiter=',')
但是有些來源是 Big5、有些是 UTF-8,就需要偵測語系編碼,要怎麼做呢?
BOM (byte-order mark) 中文叫:位元組順序記號,主要是 Windows 標示這是 UTF-8、UTF-16.. 來判別使用的。
想要讓 Windows 的 Excel 開啟 UTF-8 的檔案自動選對編碼(不會亂碼),就需要增加 UTF-8 的 BOM。(不然就得用 插入資料 選擇編碼的方式)
PHP 在判斷簡體 / 繁體中文部份,以前是可以 Big5 / GB2312 / GBK 來判斷(可以使用 mb_detect_encoding()),但是 UTF-8 後,就有點麻煩了。
10幾年前寫的網站,還是 Big5 的版本,想要跟 UTF-8 的網站並行的話,在 Apache 都需要另外做下述分別設定比較能確保這些網站不會有意外:
Big5 網站加入下述:
UTF-8 網站加入下述:
想開了,花一小時來做個轉換,都轉成 UTF-8 就省事多了~
註:此篇修改內容包含 HTML、JavaScript、CSS、PHP、MySQL data 等。
Vim 想要查看目前這個字元的 ASCII 碼(16進位、8進位),或此字元的 UTF-8 編碼,要怎麼查詢?
註:此功能在追某些特別奇怪(可能有看不到的字元)的問題,會很常用到。
Debian 使用 Testing 的話, PHP 就會自動升級到 5.6 版, 然後也會看到下述說明:
php5 (5.6.0~alpha1+dfsg-1) experimental; urgency=medium
* THIS IS A DEVELOPMENT PREVIEW - DO NOT USE IT IN PRODUCTION!
* PHP 5.6.0alpha1 comes with new features such as (incomplete list) :
+ constant scalar expressions,
+ variadic functions,
+ argument unpacking,
+ support for large(>2GiB) file uploads,
+ SSL/TLS improvements,
+ a new command line debugger called phpdbg.-- Ondřej Surý <[email protected]> Tue, 28 Jan 2014 11:02:20 +0100
關於 Unicode / UTF-8 簡介、歷史, 可見下述幾篇:
Unicode / UTF-8 官方公告、工具可見:
在此記錄 Unicode / UTF-8 字元編碼區間表.