Como exibir texto em UTF8 do mysql / phpmyadmin?

5

Eu tenho um banco de dados com várias tabelas. O banco de dados e a tabela e todas as linhas da tabela estão definidas para utf8_romanian_ci .

Todo nome que importo que contém diacríticos não será exibido corretamente.

Por exemplo: se eu introduzir MaÂehx na tabela, tenho apenas M

Os dados da tabela são importados do arquivo csv . No Excel, os diacríticos aparecem normalmente.

Como posso resolver isso?

    
por Utf8 15.04.2014 / 10:07

1 resposta

4

O UTF-8 é uma amante volúvel. Para um aplicativo da Web típico, você precisa definir o UTF-8 em vários níveis. Mesmo se o código do phpMyAdmin funcionar bem com o UTF8, ele não funcionará no vácuo: a configuração do servidor é importante. O mesmo ocorre com o banco de dados e a fonte de dados do banco de dados. Vamos resumir áreas de potencial atrito em uma aplicação geral, com um foco particular em áreas de interesse do phpMyAdmin.

Fonte de dados

Quando os dados são importados para o banco de dados, como de um arquivo de texto, ele deve ter a codificação correta. Os diacríticos podem estar sendo exibidos no Excel, mas a codificação pode ser qualquer coisa. Então você pode ter um arquivo CSV que parece certo, mas que não importa corretamente. Você pode verificar e converter a codificação do seu arquivo CSV em um editor de texto, como o EditPad ou um IDE, como o Komodo. No Notepad ++, que muitas pessoas têm, você pode selecionar "Codificação" para ver sua codificação atual, e você pode selecionar Codificação / Converter para UTF8 conforme necessário.

B. No seu banco de dados. O conjunto de caracteres e o agrupamento da tabela devem ser definidos como UTF-8. Parece que você já pode ter feito isso.

Se não, você precisa de algo como:

ALTER TABLE MyTable
DEFAULT CHARACTER SET utf8,
COLLATE utf8_general_ci;

Essa é a configuração genérica, mas o seu agrupamento romeno também deve funcionar bem.

C. A conexão com o banco de dados. Você precisa de algo como:

$connectDSN = "mysql:host={$db_host};dbname={$db_name};charset=UTF-8";

PhpMyAdmin deve se conectar corretamente. Na página de destino, você deve ver

Server charset: UTF-8 Unicode (utf8) 

Se não, continue lendo.

D. php tem que processar UTF8. No php.ini, você vai querer algo como:

default_charset = UTF-8     
mbstring.language = Neutral 
mbstring.internal_encoding = UTF-8      
mbstring.encoding_translation = On      
mbstring.http_input = auto      
mbstring.http_output = UTF-8        
mbstring.detect_order = auto        
mbstring.substitute_character = “0xFFFD”    

Você pode verificar as configurações do seu servidor com phpinfo (). Em um host compartilhado, você normalmente não tem acesso ao php.ini e precisa alterar as configurações diretamente no script. A propósito, lembre-se de usar as funções mb.

E. Configuração de cabeçalho

Para o navegador saber o que está recebendo, ele precisa receber um cabeçalho como o seguinte, enviado por php:

<?php  header('Content-type: text/html; charset=UTF-8');   ?>

Isso não deve ser um problema com o phpMyAdmin. No Firefox, usando a extensão Web Developer, você pode ir Informações / Exibir informações da página. Na guia Geral, isso mostrará a codificação.

F. Meta Tag HTML

Isso é recomendado para ajudar o navegador.

<meta charset="UTF-8">

Isso não deve ser um problema com o phpMyAdmin. Mais uma vez, verifique no navegador a codificação que está vendo.

G. Fonte

O navegador pode não ter a fonte para exibir alguns caracteres, embora as versões modernas sejam muito boas quanto às fontes substitutas. Isso provavelmente não é um problema no seu caso.

Existem muitos lugares onde as coisas podem dar errado.

Espero que isso ajude você a identificar o problema!

Quando tudo está alinhado, então mágica ... Você obtém UTF8 em todos os lugares.

E não se esqueça:

ಬಾ ಇಲ್ಲಿ ಸಂಭವಿಸು ಇಂದೆನ್ನ ಹೃದಯದಲಿ

ನಿತ್ಯವೂ ಅವತರಿಪ ಸತ್ಯಾವತಾರ

    
por 15.04.2014 / 12:49