這篇分享使用 HTML a 元素 download 屬性下載資料,並使用 iso-8859–1編碼搭配 BIG5,否則 iso-8859–1 本身無法顯示中文。(程式碼在文章最後)
關於編碼
# ASCII
- 所有拉丁文字字母 + 特殊符號
- 1 byte
# Unicode ( character collection )
- 包含所有文字、符號的編碼
- 唯一的 code point,Unicode charcter
- 形式: U+{16進位}
- 經過 mapping 轉換成 0、1,UTF為其中一種 mapping method
# UTF-8 ( encode rule )
- 可變長度
- 1~4 bytes
- 前 128 個字元編碼與 ASCII 完全相同,相容
# GBK 漢字內碼擴展規範
- 雙字節編碼
- GB2312(簡體)的擴展
# ANSI
默認的編碼方式
- 英文 — ASCII
- 簡中 — GB2312
- 繁中 — Big5
# ISO8859–1 ( Latin-1 )
- 單字節編碼
- 若要顯示編碼,需要其他編碼配合
# Base64
- 64 個符號表示二進制的一種方式
- Binary資料 & 字串資料彼此之間轉換
> 編碼前綴
> 辨認不同進位制 (16 進位: 0x、Unicode: 0xFE 0xFF )
Binary \ Text File
- Binary File: 檔案格式定義每個 byte 的
- Text File: 用你指定的編碼來解碼,解釋每個 byte 是什麼意思
內碼 \ 交換碼 \ 字碼
- 內碼:根據應用程式 or 系統內部的編碼而有所不同
- 交換碼: 不同系統間交換的編碼
- 字碼:每個文字在計算机處理中所對應的編碼
MIME Type 媒體類型
- 透過 Content-Type 表示 type,告訴 browser 資料類型
base64: text, binary 轉換 ( atob, btoa ) - 二進制: application/octet-stream
Binary: application/x-binary - MIME Type: https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types
- download file
建立一個 HTML element a
HTML5 <a > 的新屬性 download - encode text
使用第三方套件 iconv-lite encode big5
若是使用 encodeURIComponent(),default 轉成 UFT-8 - 避免 JS encode 預設為 UTF-8 ->轉成 base64 後 download