UnicodeBayt
Tamamen çevrimdışı • UTF-8 • RFC 3986

Metnin altında hangi baytlar var?

Kod noktalarını, UTF-16 birimlerini, UTF-8 baytlarını, normalizasyon etkisini ve yüzde kodlamasını tek, denetlenebilir JSON sonucunda görün.

Boş metin geçerlidir. Eşleşmemiş UTF-16 surrogate birimi güvenlik için reddedilir. Çalıştır: Ctrl/⌘ + Enter.

Hızlı örnek:
Hesap ayarları
String.prototype.normalize uygulanır.
Normalize metnin UTF-8 baytlarına uygulanır.
Orijinal ve normalize kod noktası sınırı.
Yerel işlem: Metin hiçbir yere gönderilmez veya kaydedilmez.

Hazır.

Kesin sonuç

UTF-8 bayt0
Kod noktası0
UTF-16 birimi0
Grapheme

UTF-8 hex bayt dizisi

Yüzde kodlu çıktı

Orijinal JSON string literal

Normalize JSON string literal

    Önce / sonra karşılaştırması

    Orijinal ve normalize ölçümler
    Biçim Kod noktası UTF-16 UTF-8 bayt UTF-8 hex Grapheme

    Kod noktası kayıtları

    Sıra ve UTF-16 başlangıçları 0 tabanlıdır.

    Normalize metnin kod noktaları
    Sıra Karakter Unicode Ondalık UTF-8 hex UTF-16 birimleri UTF-16 başlangıcı

    UTF-16 birimleri ve surrogate çiftleri

    Normalize metnin UTF-16 birimleri
    Sıra Hex Ondalık Rol Çift sırası

    Grapheme kümeleri

    Orijinal

    Normalize

    Agent JSON çıktısı

    Tablolar ve bu JSON, aynı UnicodeBayt.analizEt dönüş nesnesinden üretilir.

    Karakter, kod noktası ve bayt aynı şey değildir

    “Bir metnin karakter, Unicode kod noktası, UTF-16 birimi ve UTF-8 bayt sayıları aynı olmak zorunda değildir.”

    UTF-8 bit aralıkları

    Kod noktasıBit kalıbıBayt
    U+0000–U+007F0xxxxxxx1
    U+0080–U+07FF110xxxxx 10xxxxxx2
    U+0800–U+FFFF*1110xxxx 10xxxxxx 10xxxxxx3
    U+10000–U+10FFFF11110xxx 10xxxxxx 10xxxxxx 10xxxxxx4

    * U+D800–U+DFFF surrogate aralığı UTF-8 kod noktası olarak yasaktır. Dört kuralın kaynağı: RFC 3629 §3.

    ş → C5 9F, adım adım

    1. ş, U+015F yani ondalık 351'dir.
    2. Aralık U+0080–U+07FF olduğundan iki bayt kalıbı seçilir: 110xxxxx 10xxxxxx.
    3. 351'in bitleri 5 + 6 bit olarak 00101 | 011111 ayrılır.
    4. Kalıplara yerleşince 11000101 10011111, yani C5 9F elde edilir.

    Bu baytlar component modunda %C5%9F olur. `%` ve iki büyük hex basamağı kuralı WHATWG URL percent-encode ile uyumludur.

    Yüzde kodlama profilleri

    Motor önce normalize metni UTF-8 baytlarına çevirir, sonra yalnız açıkça izin verilen ASCII baytlarını olduğu gibi bırakır. encodeURIComponent kullanılmaz.

    Adı benzer olsa da bu aracın sıkı RFC 3986 component profili, WHATWG component kümesi/JavaScript encodeURIComponent ile aynı değildir: !'()* burada kodlanır.

    UnicodeBayt nasıl kullanılır?

    1. Metni girin. Türkçe, emoji, birleşik işaret veya kontrol karakteri içerebilen metni kutuya yazın.
    2. Kuralları seçin. Normalizasyon biçimini, yüzde kodlama profilini, grapheme sayımını ve kayıt limitini seçin.
    3. Kesin sonucu alın. Özet, kayıt tabloları ve aynı motor nesnesinden üretilen JSON çıktısını inceleyin veya kopyalayın.

    Sık hatalar

    Kısa SSS

    JavaScript length kaç karakter verir?

    String.length, kullanıcı algısındaki karakterleri değil UTF-16 kod birimlerini sayar; astral emojiler genellikle iki birimdir.

    NFC ve NFD aynı baytları mı üretir?

    Hayır. Görsel olarak aynı metin farklı kod noktaları ve UTF-8 baytları içerebilir; örneğin é NFC'de iki, e + birleşik aksan NFD'de üç UTF-8 baytıdır.

    Intl.Segmenter yoksa grapheme sayısı nasıl bulunur?

    Bulunmaz. UnicodeBayt sayı ve kümeleri null bırakır, SEGMENTER_YOK uyarısı verir ve kod noktası sayısını tahmin olarak kullanmaz.

    URL yüzde kodlaması HTML kodlaması mıdır?

    Hayır. Yüzde kodlaması UTF-8 baytlarını %HH biçimine dönüştürür; HTML karakter referansları ise HTML ayrıştırıcısına yönelik ayrı bir sözdizimidir.

    Kaynaklar ve runtime sınırı

    Grapheme sınırları, tarayıcının Intl.Segmenter uygulamasına ve Unicode verisine bağlıdır (ECMA-402 FindBoundary). Standart web API kesin Unicode veri sürümünü açıklamadığı için JSON meta verisi runtimeDependent: true ve doğrulanamıyorsa unicodeSurumu: null döndürür.