Инструмент конвертации UTF-8

Часто задаваемые вопросы

Что такое UTF-8?

UTF-8 — это кодировка символов переменной длины для Unicode. Она использует от 1 до 4 байтов для представления символов, эффективно кодирует ASCII и поддерживает все символы Unicode.

Как этот инструмент преобразует текст в UTF-8?

Инструмент использует встроенный в браузер TextEncoder для кодирования текста в UTF-8. Каждый символ преобразуется в один или несколько байтов в соответствии с его Unicode-кодом, а затем форматируется в виде шестнадцатеричных escape-последовательностей (например, \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 и декодирования байтов обратно в строку на различных языках программирования:

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);