Il mio codice sorgente dovrebbe essere in UTF-8?

8

Sento che spesso non scegli il formato in cui si trova il tuo codice. Voglio dire che la maggior parte dei miei strumenti in passato ha deciso per me. O non ci ho nemmeno pensato davvero. Stavo usando TextPad su Windows l'altro giorno e mentre stavo salvando un file, mi ha suggerito ASCII, UTF-8/16, Unicode ecc. Ecc ...

Suppongo che quasi tutto il codice scritto sia ASCII, ma perché dovrebbe essere ASCII? Dovremmo effettivamente utilizzare i file UTF-8 ora per il codice sorgente e perché? Immagino che questo potrebbe essere utile per i team multilingue. Esistono standard associati al modo in cui i team multilingue nominano variabili / funzioni / ecc.?

    
posta Parris 13.06.2012 - 21:55
fonte

3 risposte

22

La scelta non è tra ASCII e UTF-8. ASCII è una codifica a 7 bit e UTF-8 lo sostituisce - qualsiasi testo ASCII valido è anche UTF-8 valido. I problemi sorgono quando si utilizzano caratteri non ASCII; per questi devi scegliere tra UTF-8, UTF-16, UTF-32 e varie codifiche a 8 bit (ISO-xxxx, ecc.).

La soluzione migliore è attenersi a un set di caratteri ASCII rigoroso, ovvero non utilizzare caratteri non ASCII nel codice. La maggior parte dei linguaggi di programmazione fornisce modi per esprimere caratteri non ASCII usando caratteri ASCII, ad es. "\u1234" per indicare il punto di codice Unicode a 1234. Soprattutto, evitare di utilizzare caratteri non ASCII per identificatori. Anche se funzionano correttamente, chi usa un layout di tastiera diverso ti maledirà per averli fatti digitare questi caratteri.

Se non puoi evitare caratteri non ASCII, UTF-8 è la soluzione migliore. A differenza di UTF-16 e UTF-32, è un superset di ASCII, il che significa che chiunque lo apra con la codifica sbagliata ottiene almeno la maggior parte di esso correttamente; e a differenza delle codepage a 8 bit, può codificare su ogni personaggio di cui avrai mai bisogno, senza ambiguità, ed è disponibile su tutti i sistemi, indipendentemente dalle impostazioni locali.

E poi hai la codifica che il tuo codice elabora; questo non deve essere lo stesso della codifica del tuo file sorgente. Ad esempio, posso facilmente scrivere PHP in UTF-8, ma impostare la sua codifica multibyte interna, ad esempio, Latin-1; poiché il parser PHP non si occupa affatto delle codifiche, ma piuttosto legge sequenze di byte, i miei valori letterali di stringa UTF-8 verranno interpretati erroneamente come Latin-1. Se esco da queste stringhe su un terminale UTF-8, non vedrai alcuna differenza, ma le lunghezze delle stringhe e altre operazioni multibyte (ad esempio substr ) produrranno risultati errati.

La mia regola generale è usare UTF-8 per tutto; solo se hai assolutamente a che fare con altre codifiche, converti in UTF-8 il prima possibile e da UTF-8 il più tardi possibile.

    
risposta data 13.06.2012 - 22:12
fonte
6

La maggior parte degli IDE verrà salvata per impostazione predefinita con la codifica UTF-8 e, in base all'opzione, quasi sicuramente scegliere UTF-8 su ASCII. Questo ti garantirà di non incorrere in strani problemi con il codice di internazionalizzazione.

    
risposta data 13.06.2012 - 21:56
fonte
1

Essere in grado di digitare testo semplice in stringhe o caratteri citati nel codice sorgente e riuscire a vedere il vero personaggio è molto bello. Ad esempio il simbolo pi 'π' o l'ideogramma '

risposta data 09.05.2014 - 20:32
fonte