ANSI ke UTF-8 di Notepad ++

25

Saya memiliki teks yang disandikan dalam ANSI:

File teks ANSI

Ketika saya mencoba mengubahnya menjadi UTF-8 (menggunakan menu Notepad ++ Encoding> UTF-8), saya mendapatkan beberapa karakter aneh:

File teks UTF-8

Saya pikir UTF-8 adalah superset dari ANSI dan saya tidak akan mengalami masalah seperti itu. Apakah ada yang bisa saya hindari kemunculan karakter aneh itu?

pengguna3658425
sumber
Saya tidak melihat apa yang aneh pada gambar yang terakhir
phuclv
Maksud saya karakter yang tidak dapat ditampilkan. Adakah cara untuk menghindari ini?
user3658425
Apakah Anda mengedit pertanyaan? Saya pikir saya melihat gambar terbalik
phuclv
1
Ya maaf saya mendorong suntingan terakhir saya tepat setelah seseorang menambahkan gambar, dengan ini menghapus tambahan: jika Anda dapat menambahkannya kembali itu akan menjadi luar biasa!
user3658425

Jawaban:

38

UTF-8 bukan charset, hanya penyandian untuk Unicode. 128 karakter pertama sama dengan ASCII tetapi berbeda dalam 128 byte tinggi. Sebuah byte dengan set bit tinggi (atau> = 0x80) adalah karakter yang diperluas di ASCII sementara di UTF-8 menunjukkan byte awal dari urutan multi-byte. Itulah kasus 0x93 atau 0x94 di atas. Namun, saya tidak melihat ada yang aneh di file tersebut. Itu adalah kutipan cerdas atau kutipan dengan bentuk berbeda untuk membuka dan menutup kutipan, yang sering Anda lihat ketika menggunakan editor teks kaya seperti MS Word

Edit

Pertanyaannya sudah diedit. Saya pikir itu karena Anda telah memilih alat yang salah. The encodeItem menu untuk mengubah encoding jika Anda memiliki display karakter yang salah. Itu hanya memperlakukan urutan byte yang sama dibaca dari disk sebagai pengkodean lain. Karena ASCII dan UTF-8 berbeda, Anda akan memiliki urutan byte UTF-8 yang tidak benar dan lihat hasilnya di atas. Anda harus memilihnya convert to UTF-8untuk mengubah seluruh byte input

pengkodean notepad

Anda juga bingung ANSI dan ASCII. ANSI sering merujuk ke Windows-1252, yang merupakan rangkaian karakter yang digunakan dalam bahasa Inggris Windows dan beberapa bahasa Eropa Barat. Ini adalah superset dari ISO 8859-1, meskipun ISO 8859-1 juga dapat disebut sebagai ANSI. ISO 8859-1 juga merupakan 256 codepoints pertama dari Unicode, jadi ini adalah bagian dari Unicode, tetapi tidak kompatibel dengan pengkodean UTF-8. ASCII adalah set karakter 7-bit dan merupakan bagian dari ANSI yang dikodekan oleh 8 bit, tetapi juga kadang-kadang disebut sebagai ANSI, meskipun tidak terlalu benar

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

Secara umum hubungan antara set karakter adalah sebagai berikut

ASCII < ISO 8859-1 < Windows-1252
        ^
        Unicode
phuclv
sumber
Terima kasih, maaf sudah mengacaukan charset dengan encoding. Apakah ada cara untuk menghindari memiliki karakter yang tidak dapat ditampilkan dan memiliki beberapa kutipan yang dapat ditampilkan?
user3658425
@ user3658425 silakan lihat edit saya
phuclv
1
Saya juga telah mengedit informasi ANSI / ASCII di atas
phuclv
3
Perhatikan bahwa, secara umum, "UTF-8 tanpa Byte Order Mark" adalah yang Anda inginkan. Seperti yang dikatakan beberapa orang di masa lalu, "UTF-8 adalah satu - satunya pengkodean string yang bermanfaat."
Bersepeda
4
@WillihamTotland utf8everywhere.org
phuclv