{"id":233012,"date":"2023-02-02T19:44:00","date_gmt":"2023-02-02T16:44:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233012"},"modified":"2022-11-10T18:45:44","modified_gmt":"2022-11-10T15:45:44","slug":"gb2312-n-tai-muiden-ei-ansi-merkkien-muuntaminen-utf-8-koodaukseksi-sekae-mysql-ettae-tiedostomerkkisarja","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/gb2312-n-tai-muiden-ei-ansi-merkkien-muuntaminen-utf-8-koodaukseksi-sekae-mysql-ettae-tiedostomerkkisarja\/","title":{"rendered":"GB2312:n (tai muiden ei-ANSI-merkkien) muuntaminen UTF-8-koodaukseksi (sek\u00e4 MySQL- ett\u00e4 tiedostomerkkisarja)"},"content":{"rendered":"\n<p>Ensimm\u00e4inen verkkosivustoni <a href=\"https:\/\/steakovercooked.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">steakovercooked.com<\/a> aloitti toimintansa vuonna 2006 (9 vuotta sitten). Ja tuolloin en tiennyt paljoakaan tiedostojen koodauksesta\/merkkisarjasta, ja my\u00f6s UTF-8 ei ollut niin suosittu web-sivuilla tuolloin. N\u00e4in\u00e4 p\u00e4ivin\u00e4 UTF-8:sta tulee niin suosittu, eli WordPress k\u00e4ytt\u00e4\u00e4 UTF-8-koodausta koko sivustolla, jotta voit k\u00e4yt\u00e4nn\u00f6ss\u00e4 n\u00e4ytt\u00e4\u00e4 mink\u00e4 tahansa kielen yhdell\u00e4 sivustolla ilman ongelmia.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-155185-61e5574685d46.jpg\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-155185-61e5574685d46.jpg\" alt=\"GB2312:n (tai muiden ei-ANSI-merkkien) muuntaminen UTF-8-koodaukseksi (sek\u00e4 MySQL- ett\u00e4 tiedostomerkkisarja)\" ><\/a><\/p>\n<p>UTF-8-ascii-iso-8859-1<\/p>\n<p>Kaikkien tiedostojen (PHP, HTML, CSS ja er\u00e4\u00e4t muut pelkk\u00e4\u00e4 tekstitiedostot) koodisivut olivat p\u00e4\u00e4osin ANSI-koodisivuilla ja kiinalaiset merkit ovat monitavuisia. Jos haluat n\u00e4ytt\u00e4\u00e4 n\u00e4m\u00e4 merkit (ANSI-koodauksella) selaimessa, sinun on asetettava ne otsikkotunnisteiden v\u00e4liin HTML:ss\u00e4, jotta selaimet ymm\u00e4rt\u00e4v\u00e4t:<\/p>\n<pre><code>&lt;meta http-equiv=\"Content-Type\" content=\"text\/html; charset=gb2312\"&gt;<\/code><\/pre>\n<p>HTML5:ss\u00e4 voit kirjoittaa paljon lyhyemm\u00e4ll\u00e4 menetelm\u00e4ll\u00e4:<\/p>\n<pre><code>&lt;meta charset=\"gb2312\"&gt;<\/code><\/pre>\n<p>Joten useimmat muut kuin kiinalaiset eiv\u00e4t n\u00e4e merkkej\u00e4, elleiv\u00e4t he asenna GB2312-kielipakettia selaimeen. On my\u00f6s todenn\u00e4k\u00f6ist\u00e4, ett\u00e4 jotkut yleiset tekstieditorit sotkevat hahmoja. Kiinassa yksi merkki on kaksi tavua, mutta joskus tekstieditori vain leikkaa puoliksi.<\/p>\n<h3>Muunna tiedostot (ANSI) UTF-8:ksi<\/h3>\n<p>Ennen kuin muutat metaotsikon muotoon:<\/p>\n<pre><code>&lt;meta charset=\"utf-8\"&gt;<\/code><\/pre>\n<p>Sinun on muutettava tiedostot UTF-8-koodaukseen. On monia tapoja tehd\u00e4 se. Yksinkertaisin tapa olisi tallentaa muistiin UTF-8-koodauksella.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-155185-61e55747b5a84.jpg\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-155185-61e55747b5a84.jpg\" alt=\"GB2312:n (tai muiden ei-ANSI-merkkien) muuntaminen UTF-8-koodaukseksi (sek\u00e4 MySQL- ett\u00e4 tiedostomerkkisarja)\" ><\/a><\/p>\n<p>notepad-convert-to-utf-8<\/p>\n<p>Jos sinulla on paljon tiedostoja, voit tehd\u00e4 t\u00e4m\u00e4n k\u00e4ytt\u00e4m\u00e4ll\u00e4 <strong>iconv<\/strong> -apuohjelmaa Linuxissa (<a href=\"https:\/\/helloacm.com\/site-news-vps-upgraded-again-to-handle-large-traffic\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">VPS Server<\/a> ). Seuraava komentosarja (tallennettu tiedostonimeen esim. toUTF) muuntaa yhden tiedoston UTF-8:ksi.<\/p>\n<pre><code>#!\/bin\/bash\n# https:\/\/helloacm.com\n\u00a0\nif [ \"$#\" -ne 1 ] ||! [ -r \"$1\" ]; then\n\u00a0 \u00a0 echo \"Usage: $0 file1\"\n\u00a0 \u00a0 exit 1\nfi\n\u00a0\nx=`file -bi $1 | grep 'utf' | wc -l`\nif [ $x -eq 1 ]; then\n\u00a0 echo \"$1 already converted\"\nelse\n\u00a0 echo converting $1 to UTF8\n\u00a0 iconv -f \"gb2312\" -t \"UTF-8\" $1 -o $1\nfi<\/code><\/pre>\n<p>Meid\u00e4n on v\u00e4ltett\u00e4v\u00e4 muuntamista kahdesti mahdollisten ongelmien v\u00e4ltt\u00e4miseksi. <strong><code>file -bi $1 | grep 'utf' | wc -l<\/code><\/strong>Tarkistaa, onko tiedosto jo UTF-8-koodattu. Komento <strong>iconv -f &quot;gb2312&quot; -t &quot;UTF-8&quot; $1 -o $1<\/strong> muuntaa tiedoston UTF-8 muotoon gb2132:sta (muuta t\u00e4t\u00e4 vastaavasti).<\/p>\n<p>Nyt voimme silmukoida kaikki tiedostot, joiden tiedostotunniste on *.php nykyisess\u00e4 hakemistossa ja kaikissa alihakemistoissa:<\/p>\n<pre><code>for x in `find. -type f -name \"*.php\"`; do\n   toUTF $x\ndone    <\/code><\/pre>\n<h3>Muunna MySQL-tietokanta UTF-8:ksi<\/h3>\n<p>Minun tapauksessani kaikki aiemmat mysql-tietokantani ovat oletusarvoisesti ANSI-koodattuja (<strong>latin1_swedish_ci-<\/strong> lajittelu), se vioittuu nykyaikaisissa selaimissa, jos siin\u00e4 on GB2312-merkkej\u00e4 (monitavu). Esimerkiksi PhpMyAdminissa on UTF-8-koodaus ja ANSI\/GB2312-merkit n\u00e4kyv\u00e4t vioittuneina selaimessa.<\/p>\n<p>N\u00e4iden tietojen tallentamiseksi UTF-8:aan helpoin tapa on vied\u00e4 taulukko (suositus on phpMyAdmin) SQL-tiedostoon. varmista, ett\u00e4 viet sen k\u00e4ytt\u00e4m\u00e4ll\u00e4 <strong>ISO 8859-1 -standardia<\/strong> (t\u00e4ysi englanninkielinen kattavuus). <strong>iso 8859-1<\/strong> tunnetaan my\u00f6s nimell\u00e4 ANSI, mutta GB2312-merkit voidaan tallentaa monitavuisena merkkijonona. Jos avaat SQL:n Notepadissa, n\u00e4et silti kiinalaiset merkit, sinun tarvitsee vain tallentaa UTF-8-koodauksella.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-155185-61e55748eff91.jpg\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-155185-61e55748eff91.jpg\" alt=\"GB2312:n (tai muiden ei-ANSI-merkkien) muuntaminen UTF-8-koodaukseksi (sek\u00e4 MySQL- ett\u00e4 tiedostomerkkisarja)\" ><\/a><\/p>\n<p>phpmyadmin<\/p>\n<p>Voi, viel\u00e4 yksi asia ennen tallentamista UTF-8-muodossa. Sinun tulee etsi\u00e4 ja korvata sana &quot;latin1&quot; sanalla &quot;utf-8&quot; SQL-tiedostossa. Tuo sitten SQL uudelleen phpMyAdminilla, jotta olet valmis. Kaikki tiedot s\u00e4ilytet\u00e4\u00e4n ja muutetaan UTF-8-koodaukseen ja lajittelu muutetaan (varchar, teksti, longtext jne.) muotoon <strong>utf8_general_ci<\/strong>.<\/p>\n<h3>MySQL UTF-8 -asetukset<\/h3>\n<p>PHP:ss\u00e4 voit asettaa oletusmerkkijoukon:<\/p>\n<pre><code>\u00a0 mysql_query(\"SET NAMES 'utf8'\");\n\u00a0 mysql_query(\"SET CHARACTER SET utf8\");<\/code><\/pre>\n<p>Mysql_set_charset <strong>toimii<\/strong> samalla tavalla:<\/p>\n<pre><code>if (!function_exists('mysql_set_charset')) {\n\u00a0 function mysql_set_charset($charset, $dbh)\n\u00a0 {\n\u00a0 \u00a0 return mysql_query(\"set names $charset\", $dbh);\n\u00a0 }\n}\n\/\/ mysql_set_charset \u2014 Sets the client character set\nmysql_set_charset(\"utf-8\", $link); \/\/(PHP 5 &gt;= 5.2.3) <\/code><\/pre>\n<p>Voit my\u00f6s asettaa oletusmerkkijoukon, kun MySQL-palvelin k\u00e4ynnistyy (tallentaa funktion yleiskulut yll\u00e4 olevien funktioiden kutsumista varten). Siirry muokkaamaan tiedostoa <strong>\/etc\/mysql\/my.cnf<\/strong> ja k\u00e4ynnist\u00e4 mysql-palvelin uudelleen esim. <strong>sudo service mysql restart<\/strong>. Lis\u00e4\u00e4 <strong>my.cnf<\/strong> :\u00e4\u00e4n seuraava :<\/p>\n<pre><code>[client]\ndefault-character-set=utf8\n\n[mysql]\ndefault-character-set=utf8\n\n[mysqld]\ncollation-server = utf8_unicode_ci\ninit-connect='SET NAMES utf8'\ncharacter-set-server = utf8<\/code><\/pre>\n<h3>Miksi UTF-8?<\/h3>\n<p>UTF-8 k\u00e4sittelee aakkoskirjaimia 1 tavua (sama ANSI:lle), mutta k\u00e4ytt\u00e4\u00e4 3 tavua edustamaan yht\u00e4 kiinalaista merkki\u00e4, kun taas 2 tavua k\u00e4ytet\u00e4\u00e4n, jos ne on koodattu GB2312:lla. Siksi, jos sivuillasi on paljon kiinalaisia \u200b\u200bmerkkej\u00e4, ANSI\/GB2312 s\u00e4\u00e4st\u00e4\u00e4 tilaa, mutta UTF-8 ja ANSI kuluttavat t\u00e4sm\u00e4lleen saman tilan, kun on kyse vain englanninkielisist\u00e4 kirjaimista.<\/p>\n<p>UTF-8 s\u00e4\u00e4st\u00e4\u00e4 ongelmia tulevaisuudessa. Kun olet muuntanut UTF-8:aan, sinun ei tarvitse huolehtia merkist\u00f6st\u00e4 tai koodauksesta. UTF-8 on kansainv\u00e4lisesti merkkiyst\u00e4v\u00e4llisempi, ett\u00e4 useimmat selaimet osaavat n\u00e4ytt\u00e4\u00e4 tekstin oikein. Minun tapauksessani minun on muutettava tiedostot UTF-8-koodatuksi, koska suosikkitekstieditorini sek\u00e4 PsPAD ett\u00e4 Sublime text eiv\u00e4t osaa n\u00e4ytt\u00e4\u00e4 ANSI\/GB2312:ta oikein.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/helloacm.com\" class=\"external external_icon\">helloacm.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>GB2312:n (tai muiden ei-ANSI-merkkien) muuntaminen UTF-8-koodaukseksi (sek\u00e4 MySQL- ett\u00e4 tiedostomerkkisarja)<\/p>\n","protected":false},"author":1,"featured_media":224526,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[750,719,895,917,834,843,864],"tags":[1166],"class_list":["post-233012","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-avoin-laehdekoodi","category-kehittaejae","category-koodi","category-muut","category-opas-aloittelijoille","category-opetusohjelmia","category-wordpress-5","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/233012","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/comments?post=233012"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/233012\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/224526"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=233012"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=233012"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=233012"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}