✅ WEB- ja WordPress -uutiset, -teemat, -laajennukset. Täällä jaamme vinkkejä ja parhaita verkkosivustoratkaisuja.

GB2312:n (tai muiden ei-ANSI-merkkien) muuntaminen UTF-8-koodaukseksi (sekä MySQL- että tiedostomerkkisarja)

18

Ensimmäinen verkkosivustoni steakovercooked.com aloitti toimintansa vuonna 2006 (9 vuotta sitten). Ja tuolloin en tiennyt paljoakaan tiedostojen koodauksesta/merkkisarjasta, ja myös UTF-8 ei ollut niin suosittu web-sivuilla tuolloin. Näinä päivinä UTF-8:sta tulee niin suosittu, eli WordPress käyttää UTF-8-koodausta koko sivustolla, jotta voit käytännössä näyttää minkä tahansa kielen yhdellä sivustolla ilman ongelmia.

GB2312:n (tai muiden ei-ANSI-merkkien) muuntaminen UTF-8-koodaukseksi (sekä MySQL- että tiedostomerkkisarja)

UTF-8-ascii-iso-8859-1

Kaikkien tiedostojen (PHP, HTML, CSS ja eräät muut pelkkää tekstitiedostot) koodisivut olivat pääosin ANSI-koodisivuilla ja kiinalaiset merkit ovat monitavuisia. Jos haluat näyttää nämä merkit (ANSI-koodauksella) selaimessa, sinun on asetettava ne otsikkotunnisteiden väliin HTML:ssä, jotta selaimet ymmärtävät:

HTML5:ssä voit kirjoittaa paljon lyhyemmällä menetelmällä:

Joten useimmat muut kuin kiinalaiset eivät näe merkkejä, elleivät he asenna GB2312-kielipakettia selaimeen. On myös todennäköistä, että jotkut yleiset tekstieditorit sotkevat hahmoja. Kiinassa yksi merkki on kaksi tavua, mutta joskus tekstieditori vain leikkaa puoliksi.

Muunna tiedostot (ANSI) UTF-8:ksi

Ennen kuin muutat metaotsikon muotoon:

Sinun on muutettava tiedostot UTF-8-koodaukseen. On monia tapoja tehdä se. Yksinkertaisin tapa olisi tallentaa muistiin UTF-8-koodauksella.

GB2312:n (tai muiden ei-ANSI-merkkien) muuntaminen UTF-8-koodaukseksi (sekä MySQL- että tiedostomerkkisarja)

notepad-convert-to-utf-8

Jos sinulla on paljon tiedostoja, voit tehdä tämän käyttämällä iconv -apuohjelmaa Linuxissa (VPS Server ). Seuraava komentosarja (tallennettu tiedostonimeen esim. toUTF) muuntaa yhden tiedoston UTF-8:ksi.

#!/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

Meidän on vältettävä muuntamista kahdesti mahdollisten ongelmien välttämiseksi. file -bi $1 | grep 'utf' | wc -lTarkistaa, onko tiedosto jo UTF-8-koodattu. Komento iconv -f "gb2312" -t "UTF-8" $1 -o $1 muuntaa tiedoston UTF-8 muotoon gb2132:sta (muuta tätä vastaavasti).

Nyt voimme silmukoida kaikki tiedostot, joiden tiedostotunniste on *.php nykyisessä hakemistossa ja kaikissa alihakemistoissa:

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

Muunna MySQL-tietokanta UTF-8:ksi

Minun tapauksessani kaikki aiemmat mysql-tietokantani ovat oletusarvoisesti ANSI-koodattuja (latin1_swedish_ci- lajittelu), se vioittuu nykyaikaisissa selaimissa, jos siinä on GB2312-merkkejä (monitavu). Esimerkiksi PhpMyAdminissa on UTF-8-koodaus ja ANSI/GB2312-merkit näkyvät vioittuneina selaimessa.

Näiden tietojen tallentamiseksi UTF-8:aan helpoin tapa on viedä taulukko (suositus on phpMyAdmin) SQL-tiedostoon. varmista, että viet sen käyttämällä ISO 8859-1 -standardia (täysi englanninkielinen kattavuus). iso 8859-1 tunnetaan myös nimellä ANSI, mutta GB2312-merkit voidaan tallentaa monitavuisena merkkijonona. Jos avaat SQL:n Notepadissa, näet silti kiinalaiset merkit, sinun tarvitsee vain tallentaa UTF-8-koodauksella.

GB2312:n (tai muiden ei-ANSI-merkkien) muuntaminen UTF-8-koodaukseksi (sekä MySQL- että tiedostomerkkisarja)

phpmyadmin

Voi, vielä yksi asia ennen tallentamista UTF-8-muodossa. Sinun tulee etsiä ja korvata sana "latin1" sanalla "utf-8" SQL-tiedostossa. Tuo sitten SQL uudelleen phpMyAdminilla, jotta olet valmis. Kaikki tiedot säilytetään ja muutetaan UTF-8-koodaukseen ja lajittelu muutetaan (varchar, teksti, longtext jne.) muotoon utf8_general_ci.

MySQL UTF-8 -asetukset

PHP:ssä voit asettaa oletusmerkkijoukon:

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

Mysql_set_charset toimii samalla tavalla:

Voit myös asettaa oletusmerkkijoukon, kun MySQL-palvelin käynnistyy (tallentaa funktion yleiskulut yllä olevien funktioiden kutsumista varten). Siirry muokkaamaan tiedostoa /etc/mysql/my.cnf ja käynnistä mysql-palvelin uudelleen esim. sudo service mysql restart. Lisää my.cnf :ään seuraava :

[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

Miksi UTF-8?

UTF-8 käsittelee aakkoskirjaimia 1 tavua (sama ANSI:lle), mutta käyttää 3 tavua edustamaan yhtä kiinalaista merkkiä, kun taas 2 tavua käytetään, jos ne on koodattu GB2312:lla. Siksi, jos sivuillasi on paljon kiinalaisia ​​merkkejä, ANSI/GB2312 säästää tilaa, mutta UTF-8 ja ANSI kuluttavat täsmälleen saman tilan, kun on kyse vain englanninkielisistä kirjaimista.

UTF-8 säästää ongelmia tulevaisuudessa. Kun olet muuntanut UTF-8:aan, sinun ei tarvitse huolehtia merkistöstä tai koodauksesta. UTF-8 on kansainvälisesti merkkiystävällisempi, että useimmat selaimet osaavat näyttää tekstin oikein. Minun tapauksessani minun on muutettava tiedostot UTF-8-koodatuksi, koska suosikkitekstieditorini sekä PsPAD että Sublime text eivät osaa näyttää ANSI/GB2312:ta oikein.

Tämä verkkosivusto käyttää evästeitä parantaakseen käyttökokemustasi. Oletamme, että olet kunnossa, mutta voit halutessasi kieltäytyä. Hyväksyä Lisätietoja