ANSI formatı nedir?


Yanıtlar:


246

ANSI kodlaması, genellikle Windows olmak üzere bir sistemdeki standart kod sayfasına atıfta bulunmak için kullanılan genel bir terimdir. Batı / ABD sistemlerinde daha düzgün bir şekilde Windows-1252 olarak adlandırılır . ( Diğer sistemlerde bazı diğer Windows kod sayfalarını temsil edebilir .) Bu aslında ASCII karakter kümesinin ek 128 karakter kodlu tüm ASCII karakterlerini içerdiği bir uzantısıdır . Bu fark, "ANSI" kodlamasının ASCII olduğu gibi 7-bit yerine 8-bit olmasından kaynaklanmaktadır (ASCII, günümüzde MSB 0'a ayarlı olarak her zaman 8-bit bayt olarak kodlanmaktadır ). Bu kodlamanın neden genellikle ANSI olarak adlandırıldığının açıklaması için makaleye bakın.

"ANSI" adı yanlış bir adlandırmadır, çünkü gerçek ANSI standardına karşılık gelmez, ancak ad sıkışmış demektir. ANSI, UTF-8 ile aynı değildir.


42
ANSI sadece "hafif" bir yanlış isim değil, tamamen yanlış bir isim. Bu isim açıkça ifade ettiği her şeyin bir ANSI standardı olduğunu ima eder; bu aslında siyah beyaz bir konudur. Bununla birlikte, o kadar yaygın olarak kullanılıyor ki, ona takılı kalıyoruz.
Nate CK

1
ANSI'yi Windows Kodu değil Kod Page 437 olarak biliyorum. ANSI, bülten tahtası sistemleri için oluşturulan grafiklere atıfta bulunduğunda, durumun bu olduğunu garanti edebilirim.
lordscarlet

@lordscarlet: ANSI bunları standart hale getirmedi, ancak Windows-1252, en yakın olanıdır (en azından Windows'ta), bir üst kümedir. Referans için en.wikipedia.org/wiki/ANSI_codepage#ANSI adresine bakın .
Noldorin

4
"ANSI" açıkça herhangi bir ANSI standardına atıfta bulunmaz, ancak bir dosyayı kaydettiğinizde örneğin "Kodlama: ANSI" yi seçmeniz önemlidir. Asıl soru şu: "Bu ne anlama geliyor?" Bu cevap açık ara en iyisidir.
Wernfried Domscheit

1
Benim durumumda ANSI söz ediyordu windows-1254.
Ramazan Polat

59

Teknik olarak ANSI, US-ASCII ile aynı olmalıdır. ANSI X3.4 standardını ifade eder, bu sadece ANSI kuruluşunun onaylanmış ASCII sürümüdür. Üst bit seti karakterlerinin kullanımı, 7 bit karakter seti olduğu için ASCII / ANSI'de tanımlanmamıştır.

Bununla birlikte, DOS ve daha sonra Windows topluluğu tarafından terimin yıllarca kötüye kullanılması, “hangi makinenin kullanıldığının sistem kod sayfası” olarak pratik anlamını bırakmıştır. Sistem kod sayfası bazen 'mbcs' olarak da bilinir, çünkü Doğu Asya sistemlerinde karakter başına çok baytlık kodlama olabilir. Bazı kod sayfaları üst bit açık baytlarını çok baytlı bir dizide arka bayt olarak bile kullanabilir, bu yüzden düz ASCII ile sıkı bir şekilde uyumlu değildir ... ancak o zaman bile buna hala “ANSI” denir.

ABD ve Batı Avrupa varsayılan ayarlarında “ANSI”, Windows kod sayfası 1252 ile eşleşir. Bu, ISO-8859-1 ile aynı değildir (oldukça benzer olmasına rağmen). Diğer makinelerde başka bir şey olabilir. Bu, “ANSI” yi harici bir kodlama tanımlayıcısı olarak tamamen işe yaramaz hale getirir.


32

Açıkçası ANSI kodlaması diye bir şey yoktur. Konuşma dilinde ANSI terimi birkaç farklı kodlama için kullanılır:

  1. ISO 8859-1
  2. Windows CP1252
  3. Bir Windows makinesinde geçerli sistem kodlaması (Win32 API terminolojisinde).

Bu yanlış. Windows kod sayfası 1252, ISO 8859-1 temel alınarak oluşturulmuştur, ancak tamamen eşit değildir. ANSI terimi ISO 8859-x standardını ifade eder.
Patrik

17

Bir zamanlar Microsoft, herkes gibi, 7-bit karakter kümeleri kullandı ve ASCII'yi temel bir alt küme olarak tutsalar da, onlara uygun olduğunda kendileri icat ettiler. Daha sonra dünyanın 8 bit kodlamaya geçtiğini ve ISO-8859 ailesi gibi uluslararası standartların olduğunu fark ettiler. O günlerde, uluslararası bir standarda sahip olmak istiyorsanız ve ABD'de yaşıyorsanız, uluslararası standartları kendi markaları ve numaralarıyla yeniden yayımlayan Amerikan Ulusal Standartlar Enstitüsü, ANSI'den satın aldınız (çünkü ABD hükümeti uluslararası standartlara değil, Amerikan standartlarına uygunluk). Microsoft'un ISO-8859 kopyası kapakta "ANSI" dedi. Microsoft o günlerde standartlara çok alışık olmadığından, t ANSI'nin başka birçok standart yayınladığını fark etmem. Bu yüzden ISO-8859 ailesindeki standartlara (ve o günlerde standartları gerçekten anlamadıkları için icat ettikleri varyantlara), "ANSI" kapağındaki adıyla atıfta bulundular ve Microsoft'a girdi kullanıcı dokümantasyonu ve dolayısıyla kullanıcı topluluğuna. Bu yaklaşık 30 yıl önceydi, ancak bugün hala adı duyuyorsun.


standartlar endüstri meselesiydi, bu yüzden programcılar yeni bir endüstri olduğu için standartlara yeniydi?
CoffeDeveloper

1
Microsoft'un kuruluşuna kadar yeni bir endüstri değildi.
Michael Kay

Microsoft, genel olarak birlikte çalışabilirliğe karşı sorunlu ve tartışmalı bir tutum sergilemektedir. 1990'ların sonunda standartları doğrudan reddetmek yerine "kucaklamayı ve genişletmeye" karar verdiklerinde, bu, birlikte çalışabilirliğe yönelik sorumlu bir yaklaşım olmamasına rağmen, dikkate değer bir değişiklikti. ( Sadece mevcut standartlara bağlı kalırsanız ilerlemenin imkansız olduğunu iddia edebilirsiniz , ancak bu açıkça bunu yapmanın başlıca nedeni değildir.)
üçlü

14

ASCII sadece 128 sembollü bir 7 bit kod sayfası tanımlar. ANSI bunu 8 bit'e genişletir ve 128 ila 255 sembolleri için birkaç farklı kod sayfası vardır.

ANSI adlandırması doğru değil çünkü aslında bu kod sayfalarını tanımlayan ISO / IEC 8859 normu. Referans için ISO / IEC 8859'a bakın . ISO / IEC 8859-16'dan ISO / IEC 8859-1'e kadar 16 kod sayfası vardır.

Windows-1252 yine ISO / IEC 8859-1'i temel alır ve esas olarak 128 ila 159 aralığında ayarlanan C1 kontrolü aralığında bir miktar değişiklik yapar. Wikipedia, Windows-1252'nin de bir saniyede ISO-8859-1 olarak adlandırıldığını belirtir ISO ile 8859 arasındaki kısa çizgi. (İnanılmaz! Kim böyle bir şey yapar?!?)


5

Temel olarak "ANSI", Windows'daki eski kod sayfasını ifade eder. Raymond Chen'in bu konuyla ilgili makalesine de bakınız :

Bunun kaynağı, Windows kod sayfası 1252'nin orijinal olarak ISO Standardı 8859-1 olan bir ANSI taslağını temel almasından kaynaklanmaktadır.

İlk 127 karakter çoğu kod sayfasındaki ASCII ile aynıdır, üst karakterler ise değişir.

Ancak, ANSI yok değil otomatik CP1252 veya Latince 1 anlamına gelir.

Tüm karışıklıklar bugünlerde bu tür sorunlardan kaçınmanıza ve Unicode kullanmanıza rağmen.


4

Bilgisayarınızın "Western" bir PC olmaması ve hangi kod sayfasının kullanıldığını bilmemeniz durumunda, şu sayfaya bakabilirsiniz: Ulusal Dil Desteği (NLS) API Başvurusu

[Microsoft bu başvuruyu kaldırdı, web arşivinden alın Ulusal Dil Desteği (NLS) API Başvurusu

Veya kayıt defterinizi sorgulayabilirsiniz:

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:\>

2

Tek baytlık karakterler kullanılırken, ASCII biçimi ilk 127 karakteri tanımlar. 128-255 arasındaki genişletilmiş karakterler, diğer diller için sınırlı desteğe izin vermek üzere çeşitli ANSI kod sayfaları tarafından tanımlanır. ANSI kodlu bir dizeyi anlamak için hangi kod sayfasını kullandığını bilmeniz gerekir.



-4

ANSI (diğer adıyla Windows-1252 / WinLatin1), Latin alfabesinin ISO- 8859-1'e oldukça benzeyen bir karakter kodlamasıdır . Wikipedia'ya bir göz atmak isteyebilirsiniz .


6
Herkes için CP1252 değil; bu büyük ölçüde bölgeye bağlı.
Joey
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.