Devo convertire l'intero progetto in UTF-8?

2

Sto lavorando a un software di negozio altamente personalizzato, basato su uno open source, scritto in PHP e usuali tecniche web (CSS, HTML, JS).

Ho fatto molta personalizzazione negli ultimi mesi / anni e sviluppato specifiche caratteristiche individuali che sono necessarie per avere successo nella nostra filiale.

Il negozio e i file di progetto sono codificati in ISO-8859-1 (l'azienda si trova in Germania).

Ora vogliamo diffondere e utilizzare il sistema di vendita in diversi paesi (ad esempio Svezia, Polonia, Gran Bretagna) e personalizzarlo in base alle esigenze domestiche.

Ma temo di poter riscontrare alcuni problemi di codifica in seguito, quindi la mia domanda è:

È saggio cambiare la codifica dell'intero progetto e l'ambiente in UTF-8 prima di preparare il negozio per l'utilizzo "multi-shop" o dovrei lasciare la fonte al suo posto e gestire (possibili) problemi di codifica per ogni paese mentre si avvicinano in seguito?

    
posta Ello 20.01.2014 - 11:50
fonte

3 risposte

11

Tu incontrerai problemi di codifica. Puoi gestire lo svedese e l'inglese con ISO-8859-1, ma non polacco. Potresti usare ISO-8859-2 per polacco, ma poi dovresti usare altre codifiche quando passi a linguaggi che non sono coperti da ISO-8859-1 o ISO-8859-2.

Quindi è meglio internazionalizzare il software, utilizzando UTF-8, che copre tutte le lingue e utilizzando UTF-8 in tutto.

    
risposta data 20.01.2014 - 13:27
fonte
2

La conversione da un byte singolo a una codifica multi-byte (che utf-8 è) è tutt'altro che banale. Richiederà di toccare quasi tutte le stringhe dell'applicazione (o almeno esaminarla) e ogni funzione che la manipola. Tenete presente che PHP 6 e Perl 6 sono stati bloccati per anni a causa di ciò. Non consiglierei di passare all'interruttore a meno che (a) tu sia sicuro che puoi eseguirlo, e (b) consideri attentamente se vale la pena.

Consiglierei di fare un po 'di lavoro su una base di prova per vedere come va liscio, prima di impegnarti pienamente.

Da quello che dici è chiaro che avrà bisogno di più di ISO-8859-1, quindi hai bisogno di internazionalizzazione. Ma se la tua base di clienti prevista può essere gestito con la famiglia di codifiche ISO-8859, puoi scegliere:

  1. Implementare l'internazionalizzazione in termini di impostazione della codifica a 8 bit appropriata (e includerla nelle codifiche di pagine Web, tabelle SQL, ecc.)

  2. Implementa l'internazionalizzazione passando a utf-8.

La prima opzione dovrebbe essere molto più semplice della seconda, quindi considera attentamente ciò che utf-8 ti guadagna.

Note

  1. Poiché si basa su un'applicazione open source, prenderei in considerazione l'idea di un miglioramento della base open source per il tuo sistema. Ciò consente di ottenere l'aiuto della comunità, poiché il supporto multilingue è di beneficio per tutti. E se esegui una conversione così fondamentale nella tua versione personalizzata proprietaria, sicuramente hai problemi a unire la prossima versione open source alla tua base di codice.

  2. Uno dei vantaggi reali di Unicode è che consente facilmente un sito multilingue (multi-codifica) . Se il sistema corrente è limitato a una codifica fissa, il tracciamento di più codifiche in un singolo sistema sarebbe un pasticcio ancora più grande da implementare rispetto al passaggio a Unicode. Però non sembra che ti serva nel prossimo futuro.

  3. Full disclosure: parlo per esperienza, una tentata conversione che si è rivelata molto, molto difficile. (Quindi questo potrebbe andare in entrambi i modi: forse sono solo troppo prudente e starai bene).

risposta data 20.01.2014 - 15:12
fonte
1

Alcune cose da tenere in considerazione:

Lato PHP:

  • PHP 5.4 impostazioni predefinite per funzioni come htmlentities / htmlspecialchars in UTF8 nella versione 5.4.
  • Il set di caratteri predefinito verrà applicato in php.ini a UTF8 in PHP 5.6 il prossimo trimestre.
  • Le raccomandazioni PSR dicono che UTF8 è la codifica obbligatoria per i file in PHP
  • Tutti i framework e le librerie moderne sono UTF8

Sul lato anteriore:

  • i produttori di browser e W3C / WHATWG consigliano di utilizzare UTF8 per i file front-end (css, js, html)

On Lato sistemi operativi:

  • tutti i moderni sistemi operativi in uso usano UTF8 come codifica di default, penso che sia l'ultimo Il sistema operativo che ho usato non è impostato di default in UTF8 è Windows XP (lo fa supporta UTF8, non è necessariamente l'impostazione predefinita)
  • molto probabilmente usi uno stack LAMP, le distribuzioni Linux sono UTF8 di di default

Quindi, in pratica, stai nuotando in un ecosistema UTF8 e tutti i moderni framework, librerie e altri codici PHP esterni predefiniti in UTF8. PHP stesso impone progressivamente UTF8 come impostazione predefinita, il che significa che se mantieni il tuo codice in Latin1, probabilmente incontrerai bug a lungo termine.

Il passaggio a UTF8 non è molto difficile, a meno che non si debbano gestire sorgenti di dati per le quali non è possibile controllare la codifica, il mio consiglio è di passare, risolverà un sacco di mal di testa a lungo termine :)

    
risposta data 22.01.2014 - 11:36
fonte

Leggi altre domande sui tag