{"id":233057,"date":"2023-02-02T19:53:00","date_gmt":"2023-02-02T16:53:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233057"},"modified":"2022-11-10T18:57:29","modified_gmt":"2022-11-10T15:57:29","slug":"come-convertire-gb2312-o-altri-caratteri-non-ansi-nella-codifica-utf-8-sia-mysql-che-file-charset","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/come-convertire-gb2312-o-altri-caratteri-non-ansi-nella-codifica-utf-8-sia-mysql-che-file-charset\/","title":{"rendered":"Come convertire GB2312 (o altri caratteri non ANSI) nella codifica UTF-8 (sia MySQL che file Charset)"},"content":{"rendered":"\n<p>Il mio primo sito web <a href=\"https:\/\/steakovercooked.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">steakovercooked.com \u00e8<\/a> iniziato nel 2006 (9 anni fa). E a quel tempo, non sapevo molto della codifica\/charset dei file e inoltre, l&#8217;UTF-8 non era cos\u00ec popolare per le pagine Web in quel momento. In questi giorni, UTF-8 diventa cos\u00ec 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.<\/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=\"Come convertire GB2312 (o altri caratteri non ANSI) nella codifica UTF-8 (sia MySQL che file Charset)\" ><\/a><\/p>\n<p>UTF-8-ascii-iso-8859-1<\/p>\n<p>La codepage di tutti i file (PHP, HTML, CSS e alcuni altri file di testo normale) era per lo pi\u00f9 su codepage ANSI e i caratteri cinesi sono codificati a pi\u00f9 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:<\/p>\n<pre><code>&lt;meta http-equiv=\"Content-Type\" content=\"text\/html; charset=gb2312\"&gt;<\/code><\/pre>\n<p>In HTML5, puoi scrivere in un metodo molto pi\u00f9 breve:<\/p>\n<pre><code>&lt;meta charset=\"gb2312\"&gt;<\/code><\/pre>\n<p>Pertanto, la maggior parte dei non cinesi non pu\u00f2 vedere i caratteri a meno che non installino il pacchetto lingua GB2312 per il browser. Inoltre, \u00e8 probabile che alcuni editor di testo comuni incasino i caratteri. Un singolo carattere in cinese \u00e8 di due byte, ma a volte l&#8217;editor di testo viene semplicemente tagliato a met\u00e0.<\/p>\n<h3>Converti file (ANSI) in UTF-8<\/h3>\n<p>Prima di modificare la meta intestazione in:<\/p>\n<pre><code>&lt;meta charset=\"utf-8\"&gt;<\/code><\/pre>\n<p>Dovresti convertire i file nella codifica UTF-8. Ci sono molti modi per farlo. Il metodo pi\u00f9 semplice sarebbe utilizzare il blocco note per salvare come codifica &quot;UTF-8&quot;.<\/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=\"Come convertire GB2312 (o altri caratteri non ANSI) nella codifica UTF-8 (sia MySQL che file Charset)\" ><\/a><\/p>\n<p>blocco-note-convertire in utf-8<\/p>\n<p>Se hai molti file, puoi farlo usando l&#8217;utilit\u00e0 <strong>iconv<\/strong> su 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> ). Il seguente script (salvato nel nome del file, ad esempio in UTF) convertir\u00e0 un singolo file in 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>Dobbiamo evitare di convertire due volte per evitare possibili problemi. Verificher\u00e0 se il <strong><code>file -bi $1 | grep 'utf' | wc -l<\/code><\/strong>file \u00e8 gi\u00e0 stato codificato in UTF-8. Il comando <strong>iconv -f &#8220;gb2312&quot; -t &#8220;UTF-8&quot; $1 -o $1<\/strong> convertir\u00e0 il file in UTF-8 da gb2132 (modificalo di conseguenza).<\/p>\n<p>Ora possiamo eseguire il loop di tutti i file con estensione *.php nella directory corrente e in tutte le sottodirectory:<\/p>\n<pre><code>for x in `find. -type f -name \"*.php\"`; do\n   toUTF $x\ndone    <\/code><\/pre>\n<h3>Converti il \u200b\u200bdatabase MySQL in UTF-8<\/h3>\n<p>Nel mio caso, tutto il mio precedente database mysql \u00e8 predefinito con la codifica ANSI (collation <strong>latin1_swedish_ci<\/strong>) 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.<\/p>\n<p>Per salvare questi dati in UTF-8, il metodo pi\u00f9 semplice \u00e8 esportare la tabella (consigliato phpMyAdmin) in un file SQL; assicurati di esportarlo utilizzando <strong>iso 8859-1<\/strong> (copertura completa dell&#8217;inglese). <strong>iso 8859-1<\/strong> \u00e8 anche noto come ANSI ma i caratteri GB2312 possono essere archiviati come stringa multibyte. Se apri l&#8217;SQL nel blocco note, puoi ancora vedere i caratteri cinesi, devi solo salvare come codifica &quot;UTF-8&quot;.<\/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=\"Come convertire GB2312 (o altri caratteri non ANSI) nella codifica UTF-8 (sia MySQL che file Charset)\" ><\/a><\/p>\n<p>phpmyadmin<\/p>\n<p>Oh, un&#8217;altra cosa prima di salvare come UTF-8. Dovresti cercare e sostituire la parola &quot;latin1&quot; con &quot;utf-8&quot; nel file SQL. Quindi reimporta l&#8217;SQL usando phpMyAdmin cos\u00ec 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 <strong>utf8_general_ci<\/strong>.<\/p>\n<h3>Impostazioni MySQL UTF-8<\/h3>\n<p>In PHP, puoi impostare il set di caratteri predefinito:<\/p>\n<pre><code>\u00a0 mysql_query(\"SET NAMES 'utf8'\");\n\u00a0 mysql_query(\"SET CHARACTER SET utf8\");<\/code><\/pre>\n<p>Il <strong>mysql_set_charset<\/strong> fa in modo simile:<\/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>Puoi anche impostare il set di caratteri predefinito all&#8217;avvio del server MySQL (salva le spese generali delle funzioni per chiamare le funzioni precedenti). Vai a modificare il file <strong>\/etc\/mysql\/my.cnf<\/strong> e riavvia il server mysql, ad esempio <strong>sudo service mysql restart<\/strong>. Aggiungi quanto segue a <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>Perch\u00e9 UTF-8?<\/h3>\n<p>L&#8217;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.<\/p>\n<p>L&#8217;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 \u00e8 pi\u00f9 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\u00e9 i miei editor di testo preferiti sia PsPAD che Sublime non sanno come visualizzare correttamente ANSI\/GB2312.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/helloacm.com\" class=\"external external_icon\">helloacm.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Come convertire GB2312 (o altri caratteri non ANSI) nella codifica UTF-8 (sia MySQL che file 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":[918,896,835,751,720,844,865],"tags":[1168],"class_list":["post-233057","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-altro","category-codice","category-guida-per-principianti","category-open-source-projektmanagement-3","category-sviluppatore","category-tutorial","category-wordpress-6","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/233057","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/comments?post=233057"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/233057\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/224526"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=233057"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=233057"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=233057"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}