✅ WEB ja WordPressi uudised, teemad, pistikprogrammid. Siin jagame näpunäiteid ja parimaid veebisaidi lahendusi.

GB2312 (või muude mitte-ANSI-märkide) teisendamine UTF-8 kodeeringusse (nii MySQL-i kui ka failide märgistik)

11

Minu esimene veebisait steakovercooked.com sai alguse 2006. aastal (9 aastat tagasi). Ja sel ajal ei teadnud ma failikodeeringust/märgikomplektist suurt midagi ja ka UTF-8 polnud sel ajal veebilehtede jaoks nii populaarne. Tänapäeval muutub UTF-8 nii populaarseks, st WordPress kasutab kogu saidil UTF-8 kodeeringut, nii et saate praktiliselt kuvada mis tahes keelt ühel saidil ilma probleemideta.

GB2312 (või muude mitte-ANSI-märkide) teisendamine UTF-8 kodeeringusse (nii MySQL-i kui ka failide märgistik)

UTF-8-ascii-iso-8859-1

Kõigi failide koodileht (PHP, HTML, CSS ja mõned muud lihtteksti failid) olid enamasti ANSI koodilehtedel ja hiina märgid on mitmebaidise kodeeringuga. Nende märkide kuvamiseks (ANSI-kodeeringus) brauseris peate need panema HTML-is päisesildi vahele, et brauserid mõistaksid:

HTML5-s saate kirjutada palju lühema meetodiga:

Seega ei näe enamik hiina keelt mittekõnelejaid märke, kui nad just brauseri jaoks ei installi keelepaketti GB2312. Samuti on tõenäoline, et mõned tavalised tekstiredaktorid ajavad tegelastega sassi. Hiina keeles on üks märk kaks baiti, kuid mõnikord lõikab tekstiredaktor lihtsalt pooleks.

Teisendage failid (ANSI) UTF-8-ks

Enne metapäise muutmist :

Peaksite failid teisendama UTF-8 kodeeringusse. Selleks on palju võimalusi. Lihtsaim viis oleks kasutada UTF-8 kodeeringuna salvestamiseks märkmikku.

GB2312 (või muude mitte-ANSI-märkide) teisendamine UTF-8 kodeeringusse (nii MySQL-i kui ka failide märgistik)

notepad-convert-to-utf-8

Kui teil on palju faile, saate seda teha Linuxi (VPS-server) utiliidi iconv abil. Järgmine skript (salvestatud failinimega, nt toUTF) teisendab ühe faili UTF-8-ks.

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

Võimalike probleemide vältimiseks peame vältima kahekordset teisendamist. Kontrollib file -bi $1 | grep 'utf' | wc -l, kas fail on juba UTF-8 kodeeringuga. Käsk iconv -f "gb2312" -t "UTF-8" $1 -o $1 teisendab faili gb2132-st UTF-8-ks (muutke seda vastavalt).

Nüüd saame kõik praeguses kataloogis ja kõigis alamkataloogides olevad failid *.php faililaiendiga tsüklistada:

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

Teisendage MySQL-i andmebaas UTF-8-ks

Minu puhul on kogu minu eelmine mysql-i andmebaas vaikimisi ANSI-kodeeringuga (latin1_swedish_ci võrdlemine), see rikutakse tänapäevastes brauserites, kui seal on GB2312 märke (mitmebaidine). Näiteks PhpMyAdminil on UTF-8 kodeering ja ANSI/GB2312 märgid kuvatakse brauseris rikutuna.

Nende andmete salvestamiseks UTF-8-sse on lihtsaim viis tabeli eksportimine (soovitatav phpMyAdmin) SQL-faili; veenduge, et ekspordiksite selle ISO 8859-1 abil (inglise keele täielik katvus). iso 8859-1 on tuntud ka kui ANSI, kuid GB2312 märke saab salvestada mitmebaidise stringina. Kui avate SQL-i märkmikus, näete endiselt hiina tähemärke, peate lihtsalt salvestama UTF-8 kodeeringuna.

GB2312 (või muude mitte-ANSI-märkide) teisendamine UTF-8 kodeeringusse (nii MySQL-i kui ka failide märgistik)

phpmyadmin

Oh, veel üks asi enne UTF-8 salvestamist. Peaksite otsima ja asendama sõna "latin1" sõnaga "utf-8" SQL-failis. Seejärel importige SQL uuesti, kasutades phpMyAdminit, nii et olete valmis. Kõik andmed säilitatakse ja muudetakse UTF-8 kodeeringusse ning võrdlemine (varchar, tekst, pikk tekst jne) muudetakse utf8_general_ci.

MySQL UTF-8 seaded

PHP-s saate määrata vaikemärgistiku:

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

Mysql_set_charset teeb sarnaselt:

Saate määrata ka vaikemärgistiku, kui MySQL-server käivitub (salvestage ülaltoodud funktsioonide helistamise funktsioonide üldkulud). Minge faili /etc/mysql/my.cnf redigeerimiseks ja taaskäivitage mysql server, nt sudo teenus mysql restart. Lisage faili my.cnf järgmine :

[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

Miks UTF-8?

UTF-8 käsitleb tähestikutähti 1 baiti (sama ANSI-ga), kuid kasutab 3 baiti ühe hiina tähemärgi tähistamiseks, samas kui GB2312 kodeerimisel kasutatakse 2 baiti. Seega, kui teie lehed sisaldavad palju hiina tähemärke, säästab ANSI/GB2312 ruumi, kuid UTF-8 ja ANSI tarbivad täpselt sama ruumi, kui tegemist on ainult ingliskeelsete tähtedega.

UTF-8 säästab teid tulevikus probleemidest. Kui olete UTF-8-ks teisendanud, ei pea te muretsema märgistiku ega kodeeringu pärast. UTF-8 on rahvusvaheliselt märgisõbralikum, kuna enamik brausereid teab, kuidas teksti õigesti kuvada. Minu puhul pean failid teisendama UTF-8 kodeeringusse, kuna mu lemmiktekstiredaktorid, nii PsPAD kui ka Sublime text, ei tea, kuidas ANSI/GB2312 õigesti kuvada.

See veebisait kasutab teie kasutuskogemuse parandamiseks küpsiseid. Eeldame, et olete sellega rahul, kuid saate soovi korral loobuda. Nõustu Loe rohkem