Not Defteri'nde ANSI UTF-8 ++


25

ANSI'da kodlanmış bir metnim var:

ANSI metin dosyası

UTF-8'e dönüştürmeye çalıştığımda (Notepad ++ menu Encoding> UTF-8 kullanarak) bazı tuhaf karakterler alıyorum:

UTF-8 metin dosyası

UTF-8'in ANSI'nin süperseti olduğunu ve daha sonra böyle sorunları yaşamayacağımı düşündüm. Yine de bu garip karakterlerin görünmesini engelleyebilir miyim?


Son görüntüde neyin tuhaf olduğunu görmüyorum
phuclv

Görüntülenemeyen karakterleri kastettim. Bundan kaçınmanın bir yolu var mı?
user3658425

Soruyu düzenlediniz mi? Ben görüntüleri ters görüyorum galiba
phuclv

1
Evet üzgünüm, birileri görüntüleri ekledikten hemen sonra, son düzenlememi ittim, bu nedenle ilaveyi sildim: geri ekleyebilirseniz, bu harika olurdu!
user3658425

Yanıtlar:


38

UTF-8 karakter seti değil , sadece Unicode için bir kodlama. İlk 128 karakter ASCII ile aynıdır, ancak yüksek 128 baytta farklılık gösterir. Yüksek bit ayarlı bir bayt (veya> = 0x80) ASCII’de genişletilmiş bir karakter iken UTF-8’de çoklu bayt dizisinin başlangıç ​​baytını gösterir. Bu yukarıdaki 0x93 veya 0x94 durumudur. Ancak, dosyada garip bir şey görmüyorum. Bunlar akıllı tırnaklar veya MS Word gibi zengin bir metin düzenleyiciyi kullanırken sıkça gördüğünüz tırnakların açılması ve kapanması için farklı formlara sahip tırnaklardır.

Düzenle

Soru düzenlendi. Bence yanlış aracı seçtin. encodeMenü öğeleri yanlış karakter görüntüler varsa kodlamasını değiştirmek içindir. Sadece diskten okunan aynı byte sırasını başka bir kodlama gibi ele alır. ASCII ve UTF-8 farklı olduğundan, hatalı biçimlendirilmiş bir UTF-8 bayt sırasına sahip olacak ve yukarıdaki sonucu göreceksiniz. convert to UTF-8Tüm giriş baytını değiştirmek için bunun seçilmesi gerekir

not defteri kodlaması

Ayrıca ANSI ve ASCII'yi de karıştırdınız. ANSI genellikle İngilizce Windows ve bazı Batı Avrupa dillerinde kullanılan bir karakter kümesi olan Windows-1252'yi ifade eder. ISO 8859-1'in bir üst kümesi olmasına rağmen, ISO 8859-1 ayrıca ANSI olarak da adlandırılabilir. ISO 8859-1 aynı zamanda Unicode'un ilk 256 kod noktasıdır, bu nedenle Unicode'un bir alt kümesidir, ancak UTF-8 kodlamasıyla uyumlu değildir. ASCII, 7 bitlik bir karakter kümesidir ve 8 bit tarafından kodlanan ANSI'nin bir alt kümesidir, ancak çok doğru olmasa da, bazen ANSI olarak da adlandırılır.

https://en.wikipedia.org/wiki/ANSI_character_set

Genel olarak karakter kümeleri arasındaki ilişki aşağıdaki gibidir.

ASCII < ISO 8859-1 < Windows-1252
        ^
        Unicode

Kodlama ile karakter kümesini karıştırdığın için teşekkürler. Bu görüntülenemeyen karakterlere sahip olmaktan ve bunun yerine gösterilebilir tekliflerden kaçınmanın bir yolu var mı?
user3658425

@ user3658425 benim düzenlememe bakınız
phuclv

1
Ayrıca yukarıda ANSI / ASCII bilgisini de düzenledim
phuclv

3
Genel olarak, "Bayt Sipariş İşaretsiz UTF-8" istediğinizi unutmayın. Geçmişte bazılarının daha önce de söylediği gibi, "UTF-8, yalnızca kullanışlı dize kodlamasıdır."
Riking

4
@WillihamTotland utf8everywhere.org
phuclv
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.