Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como lidar corretamente com caracteres internacionais em PHP / MySQL / Apache


Apache

A codificação do servidor não deve ser definida ou definida como UTF-8. Isso é feito através da diretiva AddDefaultCharset do apache. Isso pode ir para o virtualhost ou o arquivo geral (consulte a documentação).
AddDefaultCharset utf-8

MySql
  • Defina o agrupamento do banco de dados como UTF-8
  • Defina a codificação da conexão. Isso pode ser feito como alguém disse com mysqli_set_charset, ou enviando isso logo após a conexão:
    SET NAMES 'utf8' COLLATE 'utf8_unicode_ci'

PHP

1- Você deve definir o charset HTML da página para ser UTF-8, através de uma meta tag na página, ou através de um cabeçalho PHP:
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-or-
    header('Content-type: text/html; charset=utf-8');

2- Você deve sempre usar a versão mb* de funções relacionadas a strings, por exemplo, mbstrlen em vez de strlen para obter o comprimento da string de uma string.

Isso deve permitir que você tenha UTF-8 em todos os lugares, das páginas aos dados. Um teste que você pode fazer:clique com o botão direito do mouse em qualquer lugar da página usando o firefox e selecione Mostrar informações da página. A codificação efetiva está listada nessa página.