Che cos'è il formato di codifica ANSI? È un formato predefinito di sistema? In che modo differisce da ASCII?Che cos'è il formato ANSI?
risposta
codifica ANSI è un termine un po 'generico utilizzato per fare riferimento alla tabella codici standard su un sistema, in genere Windows. È più correttamente indicato come Windows-1252 su Western/U.S. sistemi. (Può rappresentare altri Windows code pages su altri sistemi.) Si tratta essenzialmente di extension of the ASCII character set in quanto include tutti i caratteri ASCII con codici a 128 caratteri aggiuntivi. Questa differenza è dovuta al fatto che la codifica "ANSI" è 8 bit anziché 7 bit come ASCII (ASCII è quasi sempre codificato al giorno d'oggi come byte a 8 bit con MSB impostato su 0). Vedere l'articolo per una spiegazione del motivo per cui questa codifica viene solitamente indicata come ANSI.
Il nome "ANSI" è un termine improprio, poiché non corrisponde ad alcun effettivo standard ANSI, ma il nome è rimasto bloccato. ANSI non è la stessa di UTF-8.
ANSI (ovvero Windows-1252/WinLatin1) è una codifica di caratteri dell'alfabeto latino, abbastanza simile a ISO-8859-1. Si consiglia di dare un'occhiata a it at Wikipedia.
Non è CP1252 per tutti; questo dipende molto dalla regione. – Joey
Quando si utilizzano caratteri a byte singolo, il formato ASCII definisce i primi 127 caratteri. I caratteri estesi da 128 a 255 sono definiti da varie tabelle codici ANSI per consentire un supporto limitato per altre lingue. Per dare un senso a una stringa codificata ANSI, è necessario sapere quale tabella codici usa.
ASCII definisce solo una pagina di codice a 7 bit con 128 simboli. ANSI estende questo a 8 bit e vi sono diverse code page diverse per i simboli da 128 a 255.
L'ANSI di denominazione non è corretto perché in realtà è la norma ISO/IEC 8859 che definisce questo code page. Vedere ISO/IEC 8859 come riferimento. Ci sono 16 codici di codice ISO/IEC 8859-1 a ISO/IEC 8859-16.
Windows-1252 è di nuovo basato su ISO/IEC 8859-1 con alcune modifiche principalmente nell'intervallo dello C1 control set nell'intervallo da 128 a 159. Wikipedia afferma che Windows-1252 è anche denominato ISO-8859-1 con un secondo trattino tra ISO e 8859. (Incredibile! Chi fa qualcosa del genere?!?)
In senso stretto, non esiste una codifica ANSI. Il termine ANSI viene utilizzato per vari codifiche differenti:
- ISO 8859-1
- di Windows CP1252
- sistema attuale di codifica su una macchina Windows (nella terminologia Win32 API).
1. è errato, 2 è corretto solo su "PC occidentale", 3 è corretto –
@WernfriedDomscheit Tutti e tre sono errati. ANSI non standardizza alcuna codifica. Ma entrambe le tre codifiche vengono occasionalmente chiamate ANSI. Gli standard –
Fondamentalmente "ANSI" si riferisce alla codepage legacy su Windows. Vedi anche an article by Raymond Chen su questo argomento. I primi 127 caratteri sono identici ad ASCII nella maggior parte delle code page, tuttavia i caratteri superiori variano.
Tuttavia, ANSI non non significa automaticamente CP1252 o latino 1.
Tutto confusione nonostante si dovrebbe semplicemente evitare tali problemi al giorno d'oggi e utilizzare Unicode.
Ricordo quando il testo "ANSI" si riferiva ai codici di escape pseudo VT-100 utilizzabili in DOS attraverso l'ANSI.Driver SYS per alterare il flusso del testo in streaming .... Probabilmente non è quello a cui ti riferisci ma se lo vedi http://en.wikipedia.org/wiki/ANSI_escape_code
Tecnicamente, ANSI dovrebbe essere uguale a US-ASCII. Si riferisce allo standard ANSI X3.4, che è semplicemente la versione ratificata dell'organizzazione ASCII di ANSI. L'utilizzo dei caratteri dell'insieme superiore non è definito in ASCII/ANSI poiché è un set di caratteri a 7 bit.
Tuttavia anni di uso improprio del termine da parte del DOS e successivamente della comunità di Windows hanno lasciato il suo significato pratico come "la codepage di sistema di qualsiasi macchina venga utilizzata". La codepage del sistema è anche nota come 'mbcs', poiché sui sistemi dell'Asia orientale può essere una codifica a byte multipli per carattere. Alcune code page possono persino utilizzare i byte più chiari come byte finali in una sequenza multibyte, quindi non è nemmeno strettamente compatibile con ASCII normale ... ma anche in questo caso, è ancora chiamato "ANSI".
Nelle impostazioni predefinite degli Stati Uniti e dell'Europa occidentale, "ANSI" si associa alla tabella codici di Windows 1252. Questo non è lo stesso di ISO-8859-1 (anche se è abbastanza simile). Su altre macchine potrebbe essere qualcos'altro. Questo rende "ANSI" assolutamente inutile come un identificatore di codifica esterna.
Una volta Microsoft, come tutti gli altri, utilizzava set di caratteri a 7 bit, e inventavano il proprio quando li soddisfaceva, sebbene mantenessero ASCII come un sottoinsieme principale. Poi si sono resi conto che il mondo era passato alle codifiche a 8 bit e che esistevano standard internazionali, come la famiglia ISO-8859. A quei tempi, se volevi impadronirti di uno standard internazionale e vivevi negli Stati Uniti, lo hai comprato dall'American National Standards Institute, ANSI, che ha ripubblicato gli standard internazionali con il proprio marchio e numeri (perché il governo degli Stati Uniti vuole conformità agli standard americani, non agli standard internazionali). Quindi la copia di Microsoft della ISO-8859 diceva "ANSI" sulla copertina. E poiché a quei tempi Microsoft non era molto abituata agli standard, non si rendeva conto che ANSI ha pubblicato anche molti altri standard. Quindi hanno fatto riferimento agli standard della famiglia ISO-8859 (e alle varianti che hanno inventato, perché in quegli anni non capivano gli standard) con il nome in copertina, "ANSI", e si sono fatti strada in Microsoft documentazione utente e quindi nella comunità degli utenti. Era circa 30 anni fa, ma a volte senti ancora il nome oggi.
erano roba del settore, quindi i programmatori erano nuovi agli standard poiché si trattava di una nuova industria? – GameDeveloper
Non era un nuovo settore quando Microsoft fu fondata. –
Solo nel caso il vostro PC non è un PC "occidentale" e non si sa quale pagina di codice viene utilizzato, è possibile dare un'occhiata a questa pagina: National Language Support (NLS) API Reference
Oppure si può interrogare il Registro di sistema:
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:\>
- 1. Unicode, UTF, ASCII, ANSI differenze di formato
- 2. lettura e scrittura di testo in formato ANSI
- 3. Che cos'è il formato ToString ("N0")?
- 4. $ ionicActionSheet che visualizza il formato errato
- 5. "ANSI C" o "ANSI C++" significa ancora oggi?
- 6. ANSI SQL Manuale
- 7. `Clang estensioni -ansi`
- 8. "costanti ANSI" Java
- 9. PowerShell che salva XML e che conserva il formato
- 10. getQuantityString che non sostituisce il formato con il valore
- 11. Analizza JSON in ANSI C
- 12. Interfaccia/implementazione in ANSI C
- 13. Impostazione bit in Ansi C
- 14. make iterm show ansi default
- 15. Che cos'è un "formato dichiarativo"?
- 16. Come definire il valore NaN in ANSI C?
- 17. Come eseguire il marshalling sulla stringa ANSI tramite l'attributo?
- 18. query ANSI Sql per forzare il ritorno 0 record
- 19. Converti stringhe tra il formato esadecimale e il formato binario
- 20. MDM: comando mdm iOS che invia il formato
- 21. Opzioni GCC per far rispettare il controllo standard Ansi C?
- 22. NSLocalizedString con il formato
- 23. Colorazione ANSI in modalità di compilazione
- 24. formato printf in .NET
- 25. Come risolvere `variabile sconosciuta 'sql-mode = ANSI'`?
- 26. Pure ANSI-C: crea array generico
- 27. Alternativa macro variabile in ANSI C
- 28. HAT-trie in implementazione ANSI C?
- 29. Che cosa significa formato data CCYYMMDD?
- 30. ANSI C e la funzione di sovraccarico
ANSI non è solo un termine improprio "leggero", è un nome completamente sbagliato. Questo nome implica chiaramente che qualunque cosa faccia riferimento è uno standard ANSI, che non lo è; questa è una questione di fatto in bianco e nero. Detto questo, è così ampiamente usato che siamo bloccati con esso. –
Conosco ANSI come codice Pagina 437, non Codice Windows Pagina 1252. Indietro quando ANSI faceva riferimento alla grafica creata per i sistemi di bulletin board, posso praticamente garantire che sia così. – lordscarlet
@lordscarlet: ANSI non li ha standardizzati, ma Windows-1252 è il più vicino possibile (almeno su Windows), poiché è un superset. Vedi http://en.wikipedia.org/wiki/ANSI_codepage#ANSI per riferimento. – Noldorin