desgraças conjunto de caracteres
-
22-07-2019 - |
Pergunta
Eu tenho um pequeno aplicativo ajax construído com php.
Usando phpMyAdmin Tenho definir um banco de dados mysql para utf-8, e ter importado um arquivo de texto contendo dados utf-8 para ele.
Esta funcionou bem em uma máquina Windows com easyphp, após a adição de character-set-server = utf8 e default-character-set = utf8 para o arquivo my.cnf.
Eu já tentou mover-se a um servidor de produção onde eu não tiver acesso ao arquivo de configuração, e personagens como tremas não são exibidos.
Existe algo que pode ser definido no código php (não o arquivo de configuração) para resolver isso, ou algum comando que eu posso dar para mysql?
Eu tentei ALTER DATABASE vweb_50
default Caráter SET utf8 utf8_bin COLLATE com phpMyAdmin para tentar a partir utf8_general_ci mas isso não fez diferença.
Solução
Há um par de coisas para ser feito aqui, e eu não tenho certeza se entendi o seu problema corretamente, mas se eu fizer isso, eu acho que a maioria do que pode ser abordado com as funções PHP utf8_encode e utf8_decode :
- utf8_encode
- codifica uma seqüência de ISO-8859-1 para UTF-8
- utf8_decode
- A função decodifica os dados, que se presume ser UTF-8 codificado, com a norma ISO-8859-1.
Além disso, olhar para htmlentities se necessário.
Outras dicas
utf8_encode Se você usar utf-8 em todo o aplicativo (que eu recomendaria), você não precisa / decodificação. Você verificou a codificação sua página é servido? Provavelmente o servidor está configurado para enviar iso-8859-1 como charset, enquanto seu ambiente de teste envia utf-8. Definir a codificação com um cabeçalho Content-Type:
header("Content-Type: text/html; charset=utf-8");