Apa itu format ANSI?

Jawaban:

245

Pengkodean ANSI adalah istilah yang sedikit umum digunakan untuk merujuk ke halaman kode standar pada suatu sistem, biasanya Windows. Itu lebih tepat disebut sebagai Windows-1252 pada sistem Barat / AS. (Ini dapat mewakili halaman kode Windows tertentu lainnya pada sistem lain.) Ini pada dasarnya adalah perpanjangan dari karakter ASCII yang mencakup semua karakter ASCII dengan kode 128 karakter tambahan. Perbedaan ini disebabkan oleh fakta bahwa pengkodean "ANSI" adalah 8-bit daripada 7-bit seperti ASCII (ASCII hampir selalu dikodekan saat ini sebagai byte 8-bit dengan MSB diatur ke 0). Lihat artikel untuk penjelasan mengapa pengkodean ini biasanya disebut sebagai ANSI.

Nama "ANSI" adalah nama yang salah, karena tidak sesuai dengan standar ANSI yang sebenarnya, tetapi nama tersebut macet. ANSI tidak sama dengan UTF-8.

Noldorin
sumber
42
ANSI bukan hanya keliru "sedikit", itu adalah nama yang sepenuhnya salah. Nama ini jelas menyiratkan bahwa apa pun yang dimaksud adalah standar ANSI, yang bukan; itu adalah fakta hitam-putih. Dengan itu, itu sangat banyak digunakan sehingga kita terjebak dengannya.
Nate CK
1
Saya tahu ANSI sebagai Code Page 437, bukan Windows Code Page 1252. Kembali ketika ANSI merujuk pada grafik yang dibuat untuk sistem papan buletin, saya dapat menjamin hal itu.
lordscarlet
@ lordscarlet: ANSI belum menstandarisasi mereka, tetapi Windows-1252 adalah yang terdekat yang Anda dapatkan (setidaknya pada Windows), sebagai superset. Lihat en.wikipedia.org/wiki/ANSI_codepage#ANSI untuk referensi.
Noldorin
4
"ANSI" jelas tidak mengacu pada standar ANSI apa pun, namun faktanya Anda dapat memilih "Pengkodean: ANSI" misalnya di Notepad saat Anda menyimpan file. Dan pertanyaan sebenarnya adalah: "Apa artinya"? Jawaban ini sejauh ini adalah yang terbaik.
Wernfried Domscheit
1
Dalam kasus saya, ANSI merujuk windows-1254.
Ramazan Polat
59

Secara teknis, ANSI harus sama dengan US-ASCII. Ini mengacu pada standar ANSI X3.4, yang hanya merupakan ANSI versi ASCII yang diratifikasi organisasi . Penggunaan karakter top-bit-set tidak didefinisikan dalam ASCII / ANSI karena merupakan set karakter 7-bit.

Namun bertahun-tahun penyalahgunaan istilah oleh DOS dan kemudian komunitas Windows telah meninggalkan arti praktisnya sebagai "sistem codepage dari mesin apa pun yang sedang digunakan". Codepage sistem kadang-kadang juga dikenal sebagai 'mbcs', karena pada sistem Asia Timur yang dapat menjadi pengkodean multi-byte-per-karakter. Beberapa halaman kode bahkan dapat menggunakan byte top-bit-clear sebagai trailing byte dalam urutan multibyte, sehingga bahkan tidak sepenuhnya kompatibel dengan ASCII biasa ... tetapi bahkan kemudian, itu masih disebut "ANSI".

Pada pengaturan standar AS dan Eropa Barat, "ANSI" memetakan ke kode Windows halaman 1252. Ini tidak sama dengan ISO-8859-1 (meskipun sangat mirip). Di mesin lain, bisa jadi hal lain. Ini membuat "ANSI" sama sekali tidak berguna sebagai pengidentifikasi pengkodean eksternal.

bobince
sumber
32

Sebenarnya, tidak ada yang namanya pengkodean ANSI. Bahasa sehari-hari istilah ANSI digunakan untuk beberapa pengkodean yang berbeda:

  1. ISO 8859-1
  2. Windows CP1252
  3. Pengkodean sistem saat ini pada mesin Windows (dalam terminologi API Win32).
Nemanja Trifunovic
sumber
Itu salah. Codepage Windows 1252 dibuat berdasarkan ISO 8859-1 tetapi tidak sepenuhnya sama. Istilah referensi ANSI ke standar ISO 8859-x.
Patrik
17

Sekali waktu Microsoft, seperti orang lain, menggunakan set karakter 7-bit, dan mereka menciptakan sendiri ketika itu cocok untuk mereka, meskipun mereka terus ASCII sebagai subset inti. Kemudian mereka menyadari bahwa dunia telah beralih ke pengkodean 8-bit dan bahwa ada standar internasional di sekitarnya, seperti keluarga ISO-8859. Pada masa itu, jika Anda ingin mendapatkan standar internasional dan Anda tinggal di AS, Anda membelinya dari American National Standards Institute, ANSI, yang menerbitkan kembali standar internasional dengan merek dan nomor mereka sendiri (itu karena pemerintah AS ingin kesesuaian dengan standar Amerika, bukan standar internasional). Jadi salinan Microsoft ISO-8859 mengatakan "ANSI" di sampulnya. Dan karena Microsoft tidak terlalu terbiasa dengan standar pada masa itu, mereka tidak t menyadari bahwa ANSI menerbitkan banyak standar lain juga. Jadi mereka merujuk pada standar dalam keluarga ISO-8859 (dan varian yang mereka ciptakan, karena mereka tidak benar-benar memahami standar pada masa itu) dengan nama di sampul, "ANSI", dan menemukan jalannya ke Microsoft dokumentasi pengguna dan karenanya ke dalam komunitas pengguna. Itu sekitar 30 tahun yang lalu, tetapi Anda kadang-kadang masih mendengar nama hari ini.

Michael Kay
sumber
standar adalah hal-hal industri sehingga programmer baru untuk standar karena ini adalah industri baru?
CoffeDeveloper
1
Itu bukan industri baru pada saat Microsoft didirikan.
Michael Kay
Microsoft memiliki sikap yang bermasalah dan kontroversial terhadap interoperabilitas secara umum. Ketika mereka memutuskan pada akhir 1990-an untuk "merangkul dan memperluas" standar alih-alih langsung menghindarinya, itu adalah perubahan yang luar biasa, meskipun masih bukan pendekatan yang bertanggung jawab terhadap interoperabilitas yang tepat. (Anda dapat berargumen bahwa kemajuan tidak mungkin jika Anda hanya mematuhi standar yang ada, tetapi itu jelas bukan alasan utama mereka melakukannya dengan cara ini.)
tripleee
14

ASCII hanya mendefinisikan halaman kode 7 bit dengan 128 simbol. ANSI memperluas ini hingga 8 bit dan ada beberapa halaman kode yang berbeda untuk simbol 128 hingga 255.

Penamaan ANSI tidak benar karena sebenarnya norma ISO / IEC 8859 yang mendefinisikan halaman kode ini. Lihat ISO / IEC 8859 untuk referensi. Ada 16 halaman kode ISO / IEC 8859-1 hingga ISO / IEC 8859-16.

Windows-1252 sekali lagi didasarkan pada ISO / IEC 8859-1 dengan beberapa modifikasi terutama dalam kisaran kontrol C1 yang diatur dalam kisaran 128 hingga 159. Wikipedia menyatakan bahwa Windows-1252 juga disebut sebagai ISO-8859-1 dengan yang kedua tanda hubung antara ISO dan 8859. (Luar biasa! Siapa yang melakukan hal seperti itu?!?)

Daniel Brückner
sumber
5

Pada dasarnya "ANSI" mengacu pada codepage lawas pada Windows. Lihat juga artikel oleh Raymond Chen tentang topik ini:

Sumber ini berasal dari fakta bahwa kode Windows halaman 1252 pada awalnya didasarkan pada konsep ANSI, yang menjadi ISO Standar 8859-1.

127 karakter pertama identik dengan ASCII di sebagian besar halaman kode, namun karakter atas bervariasi.

Namun, ANSI tidak secara otomatis berarti CP1252 atau Latin 1.

Semua kebingungan meskipun Anda harus menghindari masalah seperti saat ini dan menggunakan Unicode.

Joey
sumber
4

Kalau-kalau PC Anda bukan PC "Barat" dan Anda tidak tahu halaman kode mana yang digunakan, Anda dapat melihat halaman ini: Referensi API Dukungan Bahasa Nasional (NLS)

[Microsoft menghapus referensi ini, ambil formulirnya dari web-arsip Referensi API Dukungan Bahasa Nasional (NLS)

Atau Anda dapat menanyakan registri Anda:

C:\>reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage /f ACP

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage
    ACP    REG_SZ    1252

End of search: 1 match(es) found.

C:\>
Wernfried Domscheit
sumber
2

Saat menggunakan karakter byte tunggal, format ASCII menentukan 127 karakter pertama. Karakter yang diperluas dari 128-255 ditentukan oleh berbagai halaman kode ANSI untuk memungkinkan dukungan terbatas untuk bahasa lain. Untuk memahami string yang dikodekan ANSI, Anda perlu mengetahui halaman kode mana yang digunakannya.

Eric Petroelje
sumber
1

Saya ingat ketika teks "ANSI" merujuk ke kode melarikan diri pseudo VT-100 yang dapat digunakan dalam DOS melalui driver ANSI.SYS untuk mengubah aliran teks streaming .... Mungkin bukan yang Anda maksudkan tetapi jika dilihat http: //en.wikipedia.org/wiki/ANSI_escape_code

jmucchiello
sumber
-4

ANSI (alias Windows-1252 / WinLatin1) adalah pengkodean karakter alfabet Latin, cukup mirip dengan ISO-8859-1 . Anda mungkin ingin melihatnya di Wikipedia .

moff
sumber
6
Ini bukan CP1252 untuk semua orang; itu sangat tergantung pada daerah.
Joey