Unicode'dan UTF-8'e Dönüştürücü

Düz Unicode metni, programlama dillerinin kaynak koduna gömdüğü \u00E9, \u{1F600} kaçış sözdizimine dönüştürün ya da kaçışlı bir dize yapıştırıp onu orijinal karakterlere geri çözün. BMP karakterleri (4 haneli kaçışlar) ve emoji gibi ek düzlemler (değişken uzunlukta \u{...}) için çalışır.

Unicode ile UTF-8 kaçışları arasında nasıl dönüştürülür

  1. 1

    Bir yön seçin

    Karakterleri `\u` kaçışlarına kodlayın ya da kaçışlı bir dizeyi metne geri çözün.

  2. 2

    Girdinizi yapıştırın

    Kodlama için düz metin; çözme için `\uXXXX` ya da `\u{XXXXX}` dizileri olan bir dize.

  3. 3

    Çıktıyı okuyun

    BMP karakterleri `\u0041` tarzı dört haneli kaçışlar üretir; U+FFFF üstündeki karakterler ES6 `\u{...}` biçimini kullanır.

  4. 4

    Kodunuza kopyalayın

    Sonucu bir JavaScript dizesine, JSON değişmezine, yapılandırma dosyasına ya da test fikstürüne bırakın.

Diller arası kaçış sözdizimi

Farklı diller aynı fikri farklı biçimde yazar. Dönüştürücü yaygın JavaScript/JSON biçimini çıkarır, ama aynı karakteri başka bir yerde yazdığınızda neye çevireceğiniz burada.

Dile göre kaçış sözdizimi

Dil BMP (<= U+FFFF) Ek (> U+FFFF)
JavaScript \u00E9 \u{1F600} (ES6+)
JSON \u00E9 Vekil çift \uD83D\uDE00
Python \u00e9 \U0001F600
Java \u00e9 Vekil çift
C / C++ \u00e9 \U0001F600
Ruby \u00e9 \u{1F600}
Rust \u{00e9} \u{1F600}
HTML varlığı &#xE9; &#x1F600;
CSS \0000e9 \1F600

Emojiler neden uzun biçimi gerektirir

Temel çok dilli düzlem (BMP) U+0000 ile U+FFFF arasını kapsar, her şey tek bir 16 bitlik birime sığar, ki eski \uXXXX sözdizimi bunun için tasarlanmıştı. Emojiler çoğunlukla düzlem 1’de (U+1F000 ve üstü) yaşar, ki bu dört hex haneye sığamaz. İki seçenek:

  1. ES6 süslü parantezler, \u{1F600} herhangi bir uzunluğu kabul eder.
  2. UTF-16 vekil çiftleri, bir karakter için iki \uXXXX kaçışı. JSON ayrıştırıcıları bunu kabul eder ve JSON kodlayıcıları genellikle bunu üretir.

İkisi de aynı dizeye çözülür, ama vekil çiftleri kırılgandır: bir dizeyi yüksek ve düşük vekil arasında dilimlemek size geçersiz UTF-16 verir.

Sık Sorulan Sorular

Dört hex hane en fazla U+FFFF’e ulaşır. Emojiler U+1F000’de başlar, bu yüzden ES6 süslü parantez biçimi \u{...} gerektirirler, ya da eski hedeflerde takılı kaldıysanız bir UTF-16 vekil çifti. Bu araç U+FFFF üstündeki her şey için süslü parantez kullanır.

Çift olarak değil. Çözücü süslü parantez biçimi \u{1F600} ile dört haneli \uXXXX kaçışlarını anlar, ama bir UTF-16 vekil çiftini (JSON’in kullandığı iki kaçışlı biçim) tek bir emojiye yeniden birleştirmez: her yarı kendi başına çözülür ve geri kurulamaz. U+FFFF üstündeki her şey için süslü parantez biçimi \u{...} yapıştırın; kodlayıcının ürettiği de tam olarak budur.

Hayır. \u00E9 gibi bir kaçış, UTF-8 bayt dizisini (ki C3 A9 olurdu) değil, kod noktasını U+00E9’yi temsil eder. Ham bayt görünümü için, UTF-8 baytlarını HEX olarak gösteren Unicode Arama aracını kullanın.

Dönüşüm bu istek içinde sunucu tarafında gerçekleşir, ama hiçbir şey saklanmaz: günlük tutulmaz, dönüştürdüğünüz dizeler depolanmaz.

İlgili Araçlar

Araç diğer dillerde mevcuttur