✅ Notizie, temi, plugin WEB e WordPress. Qui condividiamo suggerimenti e le migliori soluzioni per siti web.

Come convertire GB2312 (o altri caratteri non ANSI) nella codifica UTF-8 (sia MySQL che file Charset)

49

Il mio primo sito web steakovercooked.com è iniziato nel 2006 (9 anni fa). E a quel tempo, non sapevo molto della codifica/charset dei file e inoltre, l’UTF-8 non era così popolare per le pagine Web in quel momento. In questi giorni, UTF-8 diventa così popolare, ad esempio WordPress utilizza la codifica UTF-8 in tutto il sito in modo da poter visualizzare virtualmente qualsiasi lingua su un sito senza problemi.

Come convertire GB2312 (o altri caratteri non ANSI) nella codifica UTF-8 (sia MySQL che file Charset)

UTF-8-ascii-iso-8859-1

La codepage di tutti i file (PHP, HTML, CSS e alcuni altri file di testo normale) era per lo più su codepage ANSI e i caratteri cinesi sono codificati a più byte. Per visualizzare questi caratteri (nella codifica ANSI) nel browser, dovresti inserirli tra i tag di intestazione in HTML in modo che i browser possano capire:

In HTML5, puoi scrivere in un metodo molto più breve:

Pertanto, la maggior parte dei non cinesi non può vedere i caratteri a meno che non installino il pacchetto lingua GB2312 per il browser. Inoltre, è probabile che alcuni editor di testo comuni incasino i caratteri. Un singolo carattere in cinese è di due byte, ma a volte l’editor di testo viene semplicemente tagliato a metà.

Converti file (ANSI) in UTF-8

Prima di modificare la meta intestazione in:

Dovresti convertire i file nella codifica UTF-8. Ci sono molti modi per farlo. Il metodo più semplice sarebbe utilizzare il blocco note per salvare come codifica "UTF-8".

Come convertire GB2312 (o altri caratteri non ANSI) nella codifica UTF-8 (sia MySQL che file Charset)

blocco-note-convertire in utf-8

Se hai molti file, puoi farlo usando l’utilità iconv su Linux (VPS Server ). Il seguente script (salvato nel nome del file, ad esempio in UTF) convertirà un singolo file in UTF-8.

#!/bin/bash # https://helloacm.com   if [ "$#" -ne 1 ] ||! [ -r "$1" ]; then     echo "Usage: $0 file1"     exit 1 fi   x=`file -bi $1 | grep 'utf' | wc -l` if [ $x -eq 1 ]; then   echo "$1 already converted" else   echo converting $1 to UTF8   iconv -f "gb2312" -t "UTF-8" $1 -o $1 fi

Dobbiamo evitare di convertire due volte per evitare possibili problemi. Verificherà se il file -bi $1 | grep 'utf' | wc -lfile è già stato codificato in UTF-8. Il comando iconv -f “gb2312" -t “UTF-8" $1 -o $1 convertirà il file in UTF-8 da gb2132 (modificalo di conseguenza).

Ora possiamo eseguire il loop di tutti i file con estensione *.php nella directory corrente e in tutte le sottodirectory:

for x in `find. -type f -name "*.php"`; do toUTF $x done

Converti il ​​database MySQL in UTF-8

Nel mio caso, tutto il mio precedente database mysql è predefinito con la codifica ANSI (collation latin1_swedish_ci) viene danneggiato nei browser moderni se sono presenti caratteri GB2312 (multi byte). Ad esempio, PhpMyAdmin ha la codifica UTF-8 e i caratteri ANSI/GB2312 verranno visualizzati danneggiati nel browser.

Per salvare questi dati in UTF-8, il metodo più semplice è esportare la tabella (consigliato phpMyAdmin) in un file SQL; assicurati di esportarlo utilizzando iso 8859-1 (copertura completa dell’inglese). iso 8859-1 è anche noto come ANSI ma i caratteri GB2312 possono essere archiviati come stringa multibyte. Se apri l’SQL nel blocco note, puoi ancora vedere i caratteri cinesi, devi solo salvare come codifica "UTF-8".

Come convertire GB2312 (o altri caratteri non ANSI) nella codifica UTF-8 (sia MySQL che file Charset)

phpmyadmin

Oh, un’altra cosa prima di salvare come UTF-8. Dovresti cercare e sostituire la parola "latin1" con "utf-8" nel file SQL. Quindi reimporta l’SQL usando phpMyAdmin così sei a posto. Tutti i dati verranno conservati e modificati nella codifica UTF-8 e le regole di confronto verranno modificate (per varchar, text, longtext ecc.) In utf8_general_ci.

Impostazioni MySQL UTF-8

In PHP, puoi impostare il set di caratteri predefinito:

  mysql_query("SET NAMES 'utf8'");   mysql_query("SET CHARACTER SET utf8");

Il mysql_set_charset fa in modo simile:

Puoi anche impostare il set di caratteri predefinito all’avvio del server MySQL (salva le spese generali delle funzioni per chiamare le funzioni precedenti). Vai a modificare il file /etc/mysql/my.cnf e riavvia il server mysql, ad esempio sudo service mysql restart. Aggiungi quanto segue a my.cnf :

[client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] collation-server = utf8_unicode_ci init-connect='SET NAMES utf8' character-set-server = utf8

Perché UTF-8?

L’UTF-8 tratta le lettere alfabetiche 1 byte (lo stesso per ANSI) ma utilizza 3 byte per rappresentare 1 carattere cinese mentre vengono utilizzati 2 byte se codificati da GB2312. Pertanto, se le tue pagine contengono molti caratteri cinesi, ANSI/GB2312 salva lo spazio, tuttavia, UTF-8 e ANSI occupano esattamente lo stesso spazio quando si tratta solo di lettere inglesi.

L’UTF-8 ti fa risparmiare problemi in futuro. Una volta convertito in UTF-8, non devi preoccuparti del set di caratteri o della codifica. UTF-8 è più adatto ai caratteri a livello internazionale rispetto alla maggior parte dei browser in grado di visualizzare correttamente il testo. Nel mio caso, devo convertire i file in codifica UTF-8 perché i miei editor di testo preferiti sia PsPAD che Sublime non sanno come visualizzare correttamente ANSI/GB2312.

Fonte di registrazione: helloacm.com

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More