編碼轉換

常見範例

使用說明

🔄 功能介紹

編碼轉換工具提供Unicode編碼/解碼和BASE64編碼/解碼功能。Unicode編碼可以將文字轉換為Unicode跳脫序列或碼點表示;BASE64編碼可以將文字轉換為BASE64字元串,常用於資料傳輸和儲存。

📖 技術原理

Unicode編碼: Unicode是一個統一的字元編碼標準,為每種字元分配唯一的數字碼點。編碼時可以將文字中的每個字元轉換為對應的Unicode碼點表示。

BASE64編碼: BASE64是一種基於64個可列印字元來表示二進制資料的編碼方法。它將3個位元組的資料編碼為4個字元,常用於在文字環境中傳輸或儲存二進制資料。

✨ 主要特性

  • Unicode編碼支援: 支援跳脫序列(\uXXXX)、十六進位(U+XXXX)和十進位碼點格式
  • Unicode解碼支援: 自動識別多種Unicode格式並轉換為文字
  • BASE64編碼/解碼: 支援文字和BASE64字元串的雙向轉換
  • 即時轉換: 輸入文字後自動進行編碼轉換
  • 格式選擇: Unicode編碼支援多種輸出格式
  • 本機處理: 所有轉換都在瀏覽器本機完成,保護隱私安全
  • 一鍵複製: 轉換結果可一鍵複製到剪貼簿

💡 使用步驟

Unicode編碼/解碼:
  1. 在"原文"方塊中輸入需要編碼的文字
  2. 選擇Unicode輸出格式(跳脫序列/十六進位/十進位)
  3. 點擊"編碼 →"按鈕或輸入文字後自動編碼
  4. 在"Unicode編碼"方塊中檢視編碼結果
  5. 點擊"複製結果"按鈕複製編碼後的文字
  6. 要解碼,在"Unicode編碼"方塊中輸入編碼文字,點擊"← 解碼"按鈕
BASE64編碼/解碼:
  1. 在"原文"方塊中輸入需要編碼的文字
  2. 點擊"編碼 →"按鈕或輸入文字後自動編碼
  3. 在"BASE64編碼"方塊中檢視編碼結果
  4. 點擊"複製結果"按鈕複製編碼後的文字
  5. 要解碼,在"BASE64編碼"方塊中輸入BASE64字元串,點擊"← 解碼"按鈕

📋 格式說明

  • Unicode跳脫序列: 使用\uXXXX格式,如\u4f60\u597d表示"你好"
  • Unicode十六進位: 使用U+XXXX格式,如U+4F60 U+597D表示"你好"
  • Unicode十進位: 使用十進位數字,如20320 22909表示"你好"
  • BASE64編碼: 使用A-Z、a-z、0-9、+、/共64個字元,末尾可能包含=填充字元

🎯 適用場景

  • JavaScript 程式碼中的Unicode跳脫序列處理
  • URL參數或JSON資料中的特殊字元編碼
  • 資料傳輸中的BASE64編碼/解碼
  • 圖片或檔案的BASE64編碼
  • 除錯字元編碼相關問題
  • 跨平台資料傳輸的編碼轉換
  • API介面中的編碼需求

💻 使用範例

JavaScript中使用Unicode:
// Unicode跳脫序列
const text1 = '\u4f60\u597d'; // "你好"

// 取得字元的Unicode碼點
const codePoint = '你'.codePointAt(0); // 20320
const hex = codePoint.toString(16); // "4f60"

// 從碼點建立字元
const char = String.fromCodePoint(0x4f60); // "你"
JavaScript中使用BASE64:
// BASE64編碼
const text = 'Hello, 世界!';
const encoded = btoa(unescape(encodeURIComponent(text)));
// "SGVsbG8sIOS4lueVjCE="

// BASE64解碼
const decoded = decodeURIComponent(escape(atob(encoded)));
// "Hello, 世界!"
Python中使用BASE64:
import base64

# BASE64編碼
text = 'Hello, 世界!'
encoded = base64.b64encode(text.encode('utf-8')).decode('ascii')
# "SGVsbG8sIOS4lueVjCE="

# BASE64解碼
decoded = base64.b64decode(encoded).decode('utf-8')
# "Hello, 世界!"

⚠️ 注意事項

  • Unicode編碼時,某些特殊字元可能需要使用代理對(surrogate pairs)表示
  • BASE64編碼會使資料大小增加約33%
  • 在JavaScript中使用BASE64處理中文時,需要先進行UTF-8編碼
  • BASE64編碼的字元串末尾可能包含=或==填充字元
  • BASE64解碼時會自動忽略所有非BASE64字元(空白、換行、標點等),提高容錯性
  • 所有處理都在本機進行,不會上傳到伺服器
  • 大文字轉換可能影響瀏覽器效能,建議分段處理

❓ 常見問題

  • Q: Unicode編碼和解碼有什麼區別?
    A: 編碼是將文字轉換為Unicode碼點表示,解碼是將Unicode碼點轉換回文字。編碼用於在程式碼中表示特殊字元,解碼用於讀取已編碼的文字。
  • Q: BASE64編碼後的字元串可以用於URL嗎?
    A: 可以,但通常需要使用URL安全的BASE64變體,將+替換為-,/替換為_,並去掉=填充字元。
  • Q: 為什麼BASE64編碼後的字元串末尾有=號?
    A: =號是BASE64編碼的填充字元。當原始資料不是3位元組的倍數時,會添加=或==來補齊。
  • Q: Unicode跳脫序列中的字母是大寫還是小寫?
    A: 通常使用小寫字母,如\u4f60,但大寫\u4F60也是有效的。本工具統一使用小寫格式。
  • Q: 可以處理emoji表情嗎?
    A: 可以,emoji字元會被正確編碼為Unicode碼點,某些emoji可能需要使用代理對表示。