UTF-8 转换工具

常见问题

什么是 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);