Javascript 下載檔案、編碼

Jasmine
3 min readOct 19, 2019

--

這篇分享使用 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 媒體類型

encode & download code
  • download file
    建立一個 HTML element a
    HTML5 <a > 的新屬性 download
  • encode text
    使用第三方套件 iconv-lite encode big5
    若是使用 encodeURIComponent(),default 轉成 UFT-8
  • 避免 JS encode 預設為 UTF-8 ->轉成 base64 後 download

--

--