api: YAML JSON TOON Database
version: 1.0.0
format: json
dataset:
  id: 1011
  slug: unicode-text-handling
  title: Unicode Text Handling Reference
  description: Text boundaries, normalization, case handling, and encoding decisions for multilingual applications.
  summary: Text boundaries, normalization, case handling, and encoding decisions for multilingual applications. Each row includes a practical application and a failure to check before using it.
  use_when:
    - Build search that handles composed and decomposed text.
    - Choose the unit for text length or truncation.
  caveats:
    - Preserve original text when using a lossy search transform.
    - Identifier security requires more than normalization.
  related:
    - date-time-interchange
    - json-schema-keywords
  category: Programming Languages
  category_slug: programming-languages
  tags: programming-languages,unicode text handling,reference,engineering
  view_count: 0
  created_at: 1791798640
  updated_at: 1791798640
  reviewed_at: "2026-10-12"
  sources:
    - title: Unicode normalization standard
      url: "https://www.unicode.org/reports/tr15/"
    - title: Unicode text segmentation
      url: "https://www.unicode.org/reports/tr29/"
    - title: Unicode security mechanisms
      url: "https://www.unicode.org/reports/tr39/"
  reading:
    - unicode-normalization-for-search-and-identifiers
  provenance: Original editorial reference notes by YJTOON, informed by the linked primary documentation. External specifications retain their own licenses.
  entry_count: 10
  fields:
    - section: data
      field: concept
      type: string
      example: UTF-8 bytes
    - section: data
      field: example
      type: string
      example: é occupies two UTF-8 bytes
    - section: data
      field: use
      type: string
      example: Measure network and file size.
    - section: data
      field: pitfall
      type: string
      example: A byte count is not a character count.
data:
  - concept: UTF-8 bytes
    example: é occupies two UTF-8 bytes
    use: Measure network and file size.
    pitfall: A byte count is not a character count.
  - concept: Code point
    example: U+00E9 is LATIN SMALL LETTER E WITH ACUTE
    use: Identify a Unicode scalar value.
    pitfall: A visible character can contain several code points.
  - concept: Grapheme cluster
    example: e plus combining acute can display as one character
    use: Move a caret or truncate visible text.
    pitfall: Code-point slicing can split a visible character.
  - concept: NFC
    example: Compose canonically equivalent sequences where possible
    use: Normalize text used for ordinary comparison.
    pitfall: It does not remove accents.
  - concept: NFD
    example: Decompose canonical equivalents
    use: Inspect combining marks or build a deliberate search transform.
    pitfall: Removing every mark changes meaning in many languages.
  - concept: NFKC
    example: Apply compatibility decomposition and composition
    use: Normalize selected identifiers under an explicit policy.
    pitfall: It can change distinctions the original text intended.
  - concept: Case folding
    example: Treat selected uppercase and lowercase forms as equivalent
    use: Build Unicode-aware caseless matching.
    pitfall: Locale and security requirements still matter.
  - concept: Turkish dotted I
    example: I, İ, ı, i require deliberate handling
    use: Test Turkish search and casing.
    pitfall: ASCII-only lowercasing is not a complete locale policy.
  - concept: Bidirectional text
    example: Arabic or Hebrew mixed with Latin identifiers
    use: Render mixed-direction labels safely.
    pitfall: Invisible controls can obscure visual ordering.
  - concept: Confusable characters
    example: Latin a and Cyrillic а can look alike
    use: Review identifiers and suspicious domains.
    pitfall: Visual similarity does not imply string equality.
