✅ Notícias, temas e plug-ins da WEB e do WordPress. Aqui compartilhamos dicas e as melhores soluções para sites.

Como converter GB2312 (ou outros caracteres não ANSI) para codificação UTF-8 (My MySQL e Files Charset)

32

Meu primeiro site steakovercooked.com começou em 2006 (9 anos atrás). E naquela época, eu não sabia muito sobre a codificação/charset de arquivos e também, o UTF-8 não era tão popular para páginas da web naquela época. Atualmente, o UTF-8 se torna tão popular, ou seja, o WordPress usa a codificação UTF-8 em todo o site para que você possa exibir virtualmente qualquer idioma em um site sem problemas.

Como converter GB2312 (ou outros caracteres não ANSI) para codificação UTF-8 (My MySQL e Files Charset)

UTF-8-ascii-iso-8859-1

A página de código de todos os arquivos (PHP, HTML, CSS e alguns outros arquivos de texto simples) estavam principalmente em páginas de código ANSI e os caracteres chineses são codificados em vários bytes. Para exibir esses caracteres (em codificação ANSI) no navegador, você precisaria colocá-los entre a tag de cabeçalho em HTML para que os navegadores possam entender:

Em HTML5, você pode escrever em um método muito mais curto:

Portanto, a maioria dos falantes não chineses não podem ver os caracteres, a menos que instalem o pacote de idioma GB2312 para o navegador. Além disso, é provável que alguns editores de texto comuns estraguem os caracteres. Um único caractere em chinês tem dois bytes, mas às vezes o editor de texto apenas corta ao meio.

Converter arquivos (ANSI) para UTF-8

Antes de alterar o meta-cabeçalho para:

Você precisaria converter os arquivos em codificação UTF-8. Há muitas maneiras de fazer isso. O método mais simples seria usar o bloco de notas para salvar como codificação ‘UTF-8’.

Como converter GB2312 (ou outros caracteres não ANSI) para codificação UTF-8 (My MySQL e Files Charset)

bloco de notas-converter-para-utf-8

Se você tiver muitos arquivos, poderá fazer isso usando o utilitário iconv no Linux (VPS Server ). O script a seguir (salvo no nome do arquivo, por exemplo, toUTF) converterá um único arquivo em UTF-8.

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

Precisamos evitar converter duas vezes para evitar possíveis problemas. O file -bi $1 | grep 'utf' | wc -lirá verificar se o arquivo já foi codificado em UTF-8. O comando iconv -f “gb2312" -t “UTF-8" $1 -o $1 converterá o arquivo para UTF-8 de gb2132 (altere isso de acordo).

Agora, podemos fazer um loop de todos os arquivos com extensões de arquivo *.php no diretório atual e em todos os subdiretórios:

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

Converter banco de dados MySQL para UTF-8

No meu caso, todos os meus bancos de dados mysql anteriores são padronizados para a codificação ANSI (collation latin1_swedish_ci) ele fica corrompido nos navegadores modernos se houver caracteres GB2312 (multi byte). Por exemplo, PhpMyAdmin tem codificação UTF-8 e os caracteres ANSI/GB2312 serão mostrados corrompidos no navegador.

Para salvar esses dados em UTF-8, o método mais fácil é exportar a tabela (recomenda-se o phpMyAdmin) para um arquivo SQL; certifique-se de exportá-lo usando iso 8859-1 (cobertura completa do inglês). iso 8859-1 também é conhecido como ANSI, mas os caracteres GB2312 podem ser armazenados como string de vários bytes. Se você abrir o SQL no bloco de notas, ainda poderá ver os caracteres chineses, basta salvar como codificação ‘UTF-8’.

Como converter GB2312 (ou outros caracteres não ANSI) para codificação UTF-8 (My MySQL e Files Charset)

phpmyadmin

Ah, mais uma coisa antes de salvar como UTF-8. Você deve pesquisar e substituir a palavra “latin1” por “utf-8” no arquivo SQL. Em seguida, reimporte o SQL usando o phpMyAdmin para que você esteja pronto. Todos os dados serão preservados e alterados para a codificação UTF-8 e o agrupamento será alterado (para varchar, text, longtext etc) para utf8_general_ci.

Configurações do MySQL UTF-8

No PHP, você pode definir o conjunto de caracteres padrão:

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

O mysql_set_charset faz o mesmo:

Você também pode definir o conjunto de caracteres padrão quando o servidor MySQL iniciar (salve as sobrecargas de função para chamar as funções acima). Vá para editar o arquivo /etc/mysql/my.cnf e reinicie o servidor mysql, por exemplo , sudo service mysql restart. Adicione o seguinte a my.cnf :

[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

Por que UTF-8?

O UTF-8 trata letras alfabéticas de 1 byte (o mesmo que ANSI), mas usa 3 bytes para representar 1 caractere chinês enquanto 2 bytes são usados ​​se codificados por GB2312. Portanto, se suas páginas contiverem muitos caracteres chineses, o ANSI/GB2312 economizará espaço, no entanto, UTF-8 e ANSI consumirão exatamente o mesmo espaço quando se trata apenas de letras em inglês.

O UTF-8 evita problemas no futuro. Depois de converter para UTF-8, você não precisa se preocupar com o conjunto de caracteres ou a codificação. UTF-8 é mais internacionalmente amigável com caracteres que a maioria dos navegadores sabe como exibir o texto corretamente. No meu caso, tenho que converter os arquivos em codificados em UTF-8 porque meus editores de texto favoritos, tanto o PsPAD quanto o texto Sublime, não sabem como exibir o ANSI/GB2312 corretamente.

Fonte de gravação: helloacm.com

Este site usa cookies para melhorar sua experiência. Presumiremos que você está ok com isso, mas você pode cancelar, se desejar. Aceitar Consulte Mais informação