TGViewer
Библиотека Go для собеса | вопросы с собеседований Библиотека Go для собеса | вопросы с собеседований @go_interview_lib · 7.46K subscribers
Post #1306 1.57K
Что такое канонизация строк

Канонизация строк это приведение строки к единственной стандартной форме перед сравнением или обработкой.

Одна и та же строка может быть представлена по-разному. Классический пример это Unicode. Символ é можно записать:

- как один кодпоинт U+00E9
- как два кодпоинта e + U+0301

Байтово это разные строки. Визуально — одинаковые. Без канонизации == вернёт false.

В стандартной библиотеке есть пакет golang.org/x/text/unicode/norm, который реализует четыре формы нормализации по стандарту Unicode:
import "golang.org/x/text/unicode/norm"

a := "é" // precomposed
b := "e\u0301" // decomposed

// Без канонизации
fmt.Println(a == b) // false

// С канонизацией
normA := norm.NFC.String(a)
normB := norm.NFC.String(b)
fmt.Println(normA == normB) // true


Где это важно на практике

- Сравнение имён пользователей и email
- Работа с файловой системой (macOS использует NFD, Linux — NFC)
- Поиск по тексту
- Безопасность: канонизация помогает избежать обходов валидации через визуально идентичные, но байтово разные строки

🐸 Библиотека Go для собеса
  • ❤ 8
  • 😁 1
More from @go_interview_lib
  1. Sep 18, 2026А вы уже забрали свой подарок ко Дню программиста? К вашему профессиональному празднику Tp…
  2. Sep 15, 2026❓ Какой максимальный размер бинарного файла можно собрать В Go нет встроенного ограничения…
  3. Sep 15, 2026😭 Как не потратить недельный лимит AI-кодинга за три дня? Разберём на вебинаре, как трати…
  4. Aug 4, 2026❓ Объясните разницу между безопасным доступом к байтам строки через срез и использованием…
  5. Aug 4, 2026Покупать новый курс каждый раз, когда меняется рабочая задача, — довольно странная механик…
  6. Aug 4, 2026👅 Самое сложное — выбрать не курс, а направление Сегодня хочется разобраться в AI-агентах…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →