常見問題
什麼是 UTF-8 編碼?
UTF-8 是一種用於 Unicode 的可變長度字元編碼。它使用 1 到 4 個位元組來表示字元,使其在編碼 ASCII 字元時高效,同時支援所有 Unicode 字元。
這個工具如何將文字轉換為 UTF-8?
此工具使用瀏覽器內建的 TextEncoder 將文字編碼為 UTF-8。每個字元會根據其 Unicode 碼位轉換為一個或多個位元組,然後格式化為十六進位跳脫序列(例如:\xE4\xB8\xAD 表示「中」)。
這個工具如何將 UTF-8 轉換為文字?
此工具會從輸入中移除 \x 前綴,並將剩下的十六進位數值解析為位元組。這些位元組接著會透過瀏覽器的 TextDecoder 解碼為文字,依照 UTF-8 編碼規則還原原始字元。
為什麼 UTF-8 被廣泛使用?
UTF-8 被廣泛使用的原因是它與 ASCII 向下相容、對英文文字的編碼效率高,並能編碼所有 Unicode 字元。它是網頁及許多系統的預設編碼,確保跨平台的文字一致性。
UTF-8 編碼的原理是什麼?
UTF-8 編碼透過將 Unicode 碼位分組並編碼為位元組序列來運作:
- 碼位從 U+0000 到 U+007F 編碼為單位元組(與 ASCII 相容)。
- 碼位從 U+0080 到 U+07FF 編碼為兩個位元組。
- 碼位從 U+0800 到 U+FFFF 編碼為三個位元組。
- 碼位從 U+10000 到 U+10FFFF 編碼為四個位元組。
多位元組序列中的每個位元組都以特定的位元模式開頭,以指出它在序列中的角色,確保 UTF-8 具有自我同步與錯誤容忍的特性。
如何在不同程式語言中實作 UTF-8 轉換?
以下是如何在各種程式語言中將字串編碼為 UTF-8 位元組,並將 UTF-8 位元組解碼回字串的範例:
Go
Go 範例程式碼:UTF-8 轉換。
import "fmt"
func main() {
text := "Hello, World!"
// Encode string to UTF-8 bytes
utf8Bytes := []byte(text)
fmt.Printf("UTF-8 bytes: %x\n", utf8Bytes)
// Decode UTF-8 bytes back to string
decodedText := string(utf8Bytes)
fmt.Printf("Decoded text: %s\n", decodedText)
}
Java
Java 範例程式碼:UTF-8 轉換。
import java.nio.charset.StandardCharsets;
public class Utf8Example {
public static void main(String[] args) {
String text = "Hello, World!";
// Encode string to UTF-8 bytes
byte[] utf8Bytes = text.getBytes(StandardCharsets.UTF_8);
System.out.println("UTF-8 bytes: " + java.util.Arrays.toString(utf8Bytes));
// Decode UTF-8 bytes back to string
String decodedText = new String(utf8Bytes, StandardCharsets.UTF_8);
System.out.println("Decoded text: " + decodedText);
}
}
Python
Python 範例程式碼:UTF-8 轉換。
text = "Hello, World!"
# Encode string to UTF-8 bytes
utf8_bytes = text.encode("utf-8")
print(f"UTF-8 bytes: {utf8_bytes}")
# Decode UTF-8 bytes back to string
decoded_text = utf8_bytes.decode("utf-8")
print(f"Decoded text: {decoded_text}")
PHP
PHP 範例程式碼:UTF-8 轉換。
<?php
$text = "Hello, World!";
// Encode string to UTF-8 bytes
$utf8Bytes = utf8_encode($text);
echo "UTF-8 bytes: " . bin2hex($utf8Bytes) . PHP_EOL;
// Decode UTF-8 bytes back to string
$decodedText = utf8_decode($utf8Bytes);
echo "Decoded text: " . $decodedText . PHP_EOL;
?>
JavaScript
JavaScript 範例程式碼:UTF-8 轉換。
const text = "Hello, World!";
// Encode string to UTF-8 bytes
const encoder = new TextEncoder();
const utf8Bytes = encoder.encode(text);
console.log("UTF-8 bytes:", Array.from(utf8Bytes));
// Decode UTF-8 bytes back to string
const decoder = new TextDecoder("utf-8");
const decodedText = decoder.decode(utf8Bytes);
console.log("Decoded text:", decodedText);
TypeScript
TypeScript 範例程式碼:UTF-8 轉換。
const text: string = "Hello, World!";
// Encode string to UTF-8 bytes
const encoder: TextEncoder = new TextEncoder();
const utf8Bytes: Uint8Array = encoder.encode(text);
console.log("UTF-8 bytes:", Array.from(utf8Bytes));
// Decode UTF-8 bytes back to string
const decoder: TextDecoder = new TextDecoder("utf-8");
const decodedText: string = decoder.decode(utf8Bytes);
console.log("Decoded text:", decodedText);