{"id":232984,"date":"2023-02-02T19:25:00","date_gmt":"2023-02-02T16:25:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=232984"},"modified":"2022-11-10T18:38:37","modified_gmt":"2022-11-10T15:38:37","slug":"hur-man-konverterar-gb2312-eller-andra-icke-ansi-tecken-till-utf-8-kodning-baade-mysql-och-files-charset","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/hur-man-konverterar-gb2312-eller-andra-icke-ansi-tecken-till-utf-8-kodning-baade-mysql-och-files-charset\/","title":{"rendered":"Hur man konverterar GB2312 (eller andra icke-ANSI-tecken) till UTF-8-kodning (b\u00e5de MySQL och Files Charset)"},"content":{"rendered":"\n<p>Min f\u00f6rsta webbplats <a href=\"https:\/\/steakovercooked.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">steakovercooked.com<\/a> startade 2006 (9 \u00e5r sedan). Och p\u00e5 den tiden visste jag inte mycket om filkodning\/teckenupps\u00e4ttning och dessutom var UTF-8 inte s\u00e5 popul\u00e4rt f\u00f6r webbsidor p\u00e5 den tiden. Nuf\u00f6rtiden blir UTF-8 s\u00e5 popul\u00e4r, dvs. WordPress anv\u00e4nder UTF-8-kodning genom hela webbplatsen s\u00e5 att du praktiskt taget kan visa vilket spr\u00e5k som helst p\u00e5 en webbplats utan problem.<\/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=\"Hur man konverterar GB2312 (eller andra icke-ANSI-tecken) till UTF-8-kodning (b\u00e5de MySQL och Files Charset)\" ><\/a><\/p>\n<p>UTF-8-ascii-iso-8859-1<\/p>\n<p>Kodsidan f\u00f6r alla filer (PHP, HTML, CSS och n\u00e5gra andra vanliga textfiler) var mestadels p\u00e5 ANSI-kodsidor och de kinesiska tecknen \u00e4r multi-byte-kodade. F\u00f6r att visa dessa tecken (i ANSI-kodning) i webbl\u00e4saren, skulle du beh\u00f6va l\u00e4gga dessa mellan header-taggen i HTML s\u00e5 att webbl\u00e4sare kan f\u00f6rst\u00e5:<\/p>\n<pre><code>&lt;meta http-equiv=\"Content-Type\" content=\"text\/html; charset=gb2312\"&gt;<\/code><\/pre>\n<p>I HTML5 kan du skriva p\u00e5 en mycket kortare metod:<\/p>\n<pre><code>&lt;meta charset=\"gb2312\"&gt;<\/code><\/pre>\n<p>S\u00e5 de flesta icke-kinesisktalande kan inte se tecknen om de inte installerar spr\u00e5kpaketet GB2312 f\u00f6r webbl\u00e4saren. Det \u00e4r ocks\u00e5 troligt att vissa vanliga textredigerare kr\u00e5nglar till karakt\u00e4rerna. Ett enstaka tecken p\u00e5 kinesiska \u00e4r tv\u00e5 byte men ibland sk\u00e4r textredigeraren bara i halvor.<\/p>\n<h3>Konvertera filer (ANSI) till UTF-8<\/h3>\n<p>Innan du \u00e4ndrar metahuvudet till:<\/p>\n<pre><code>&lt;meta charset=\"utf-8\"&gt;<\/code><\/pre>\n<p>Du skulle beh\u00f6va konvertera filerna till UTF-8-kodning. Det finns m\u00e5nga s\u00e4tt att g\u00f6ra det p\u00e5. Den enklaste metoden skulle vara att anv\u00e4nda anteckningsblock f\u00f6r att spara som &#8217;UTF-8&#8217;-kodning.<\/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=\"Hur man konverterar GB2312 (eller andra icke-ANSI-tecken) till UTF-8-kodning (b\u00e5de MySQL och Files Charset)\" ><\/a><\/p>\n<p>notepad-convert-to-utf-8<\/p>\n<p>Om du har m\u00e5nga filer kan du g\u00f6ra detta med hj\u00e4lp av <strong>iconv<\/strong> -verktyget p\u00e5 Linux (<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> ). F\u00f6ljande skript (sparat till filnamn t.ex. toUTF) kommer att konvertera en enda fil till UTF-8.<\/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>Vi m\u00e5ste undvika att konvertera tv\u00e5 g\u00e5nger f\u00f6r att f\u00f6rhindra eventuella problem. Den <strong><code>file -bi $1 | grep 'utf' | wc -l<\/code><\/strong>kommer att kontrollera om filen redan har UTF-8-kodad. Kommandot <strong>iconv -f &quot;gb2312&quot; -t &quot;UTF-8&quot; $1 -o $1<\/strong> kommer att konvertera filen till UTF-8 fr\u00e5n gb2132 (\u00e4ndra detta i enlighet med detta).<\/p>\n<p>Nu kan vi loopa alla filer med *.php filtill\u00e4gg i den aktuella katalogen och alla underkataloger:<\/p>\n<pre><code>for x in `find. -type f -name \"*.php\"`; do\n   toUTF $x\ndone    <\/code><\/pre>\n<h3>Konvertera MySQL-databas till UTF-8<\/h3>\n<p>I mitt fall \u00e4r alla mina tidigare mysql-databas inst\u00e4llda p\u00e5 ANSI-kodning (<strong>latin1_swedish_ci-<\/strong> kollation) den blir skadad i de moderna webbl\u00e4sarna om det finns GB2312-tecken (multibyte). Till exempel har PhpMyAdmin kodning UTF-8 och ANSI\/GB2312-tecknen kommer att visas skadade i webbl\u00e4saren.<\/p>\n<p>F\u00f6r att spara dessa data till UTF-8 \u00e4r den enklaste metoden att exportera tabellen (phpMyAdmin rekommenderas) till en SQL-fil; se till att du exporterar den med <strong>iso 8859-1<\/strong> (komplett t\u00e4ckning av engelska). <strong>iso 8859-1<\/strong> \u00e4r ocks\u00e5 k\u00e4nd som ANSI men GB2312-tecknen kan lagras som en flerbytestr\u00e4ng. Om du \u00f6ppnar SQL i anteckningsblocket kan du fortfarande se de kinesiska tecknen, du beh\u00f6ver bara spara som &#8217;UTF-8&#8217;-kodning.<\/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=\"Hur man konverterar GB2312 (eller andra icke-ANSI-tecken) till UTF-8-kodning (b\u00e5de MySQL och Files Charset)\" ><\/a><\/p>\n<p>phpmyadmin<\/p>\n<p>\u00c5h, en sak till innan du sparar som UTF-8. Du b\u00f6r s\u00f6ka och ers\u00e4tta ordet &quot;latin1&quot; till &quot;utf-8&quot; i SQL-filen. Importera sedan SQL-filen igen med phpMyAdmin s\u00e5 att du \u00e4r ig\u00e5ng. All data kommer att bevaras och \u00e4ndras till UTF-8-kodning och sammanst\u00e4llningen kommer att \u00e4ndras (f\u00f6r varchar, text, longtext etc) till <strong>utf8_general_ci<\/strong>.<\/p>\n<h3>MySQL UTF-8-inst\u00e4llningar<\/h3>\n<p>I PHP kan du st\u00e4lla in standardteckenupps\u00e4ttning:<\/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 g\u00f6r p\u00e5 <strong>liknande<\/strong> s\u00e4tt:<\/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>Du kan ocks\u00e5 st\u00e4lla in standardteckenupps\u00e4ttningen n\u00e4r MySQL-servern startar (spara funktionskostnader f\u00f6r att anropa ovanst\u00e5ende funktioner). G\u00e5 till redigera filen <strong>\/etc\/mysql\/my.cnf<\/strong> och starta om mysql-servern t.ex. <strong>sudo-tj\u00e4nsten mysql restart<\/strong>. L\u00e4gg till f\u00f6ljande till <strong>my.cnf<\/strong> :<\/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>Varf\u00f6r UTF-8?<\/h3>\n<p>UTF-8 behandlar alfabetiska bokst\u00e4ver 1 byte (samma som ANSI) men anv\u00e4nder 3 byte f\u00f6r att representera 1 kinesiskt tecken medan 2 byte anv\u00e4nds om de kodas av GB2312. D\u00e4rf\u00f6r, om dina sidor inneh\u00e5ller m\u00e5nga kinesiska tecken, sparar ANSI\/GB2312 utrymmet, men UTF-8 och ANSI f\u00f6rbrukar exakt samma utrymme n\u00e4r det bara g\u00e4ller engelska bokst\u00e4ver.<\/p>\n<p>UTF-8 sparar dig problem i framtiden. N\u00e4r du v\u00e4l har konverterat till UTF-8 beh\u00f6ver du inte oroa dig f\u00f6r teckenupps\u00e4ttningen eller kodningen. UTF-8 \u00e4r mer internationellt karakt\u00e4rsv\u00e4nligt att de flesta webbl\u00e4sare vet hur man visar texten korrekt. I mitt fall m\u00e5ste jag konvertera filerna till UTF-8-kodade eftersom mina favorittextredigerare b\u00e5de PsPAD och Sublime-text inte vet hur man visar ANSI\/GB2312 korrekt.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/helloacm.com\" class=\"external external_icon\">helloacm.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hur man konverterar GB2312 (eller andra icke-ANSI-tecken) till UTF-8-kodning (b\u00e5de MySQL och Files Charset)<\/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":[838,848,901,755,922,724,868],"tags":[1173],"class_list":["post-232984","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-guide-foer-nyboerjare","category-handledningar","category-koda","category-oeppen-kaella","category-oevrig","category-utvecklaren","category-wordpress-9","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/232984","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/comments?post=232984"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/232984\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/224526"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=232984"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=232984"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=232984"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}