Pergunta

Quando faço uma consulta do console MySQL e ele tem sotaques ou qualquer personagem que precise ser UTF-8 codificado, ele é assaltado

INSERT INTO users (userName) VALUES ("José Alarcón");
SELECT userName FROM users;
José Alarcón

SET NAMES utF8 não muda nada --default-character-set=utf8 Como o parâmetro muda, nada lembre -se do que isso é apenas do console. Se eu usar o phpmyadmin ou fazer qualquer consulta a partir de um programa, não há nenhum problema, mas uma linha inserida do console é assaltada. Estou usando Putty no Windows como cliente

~$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

Esclarecimento: o computador local do MI é o Windows XP, estou usando o Putty 0.60 como cliente de terminal. O sistema de destino em que o MySQL está em execução é um Linux Debian que não consigo encontrar nenhuma configuração na codificação de caráter ...

ATUALIZAÇÃO: Putty estúpido, tendo a configuração de codificação dentro de um menu chamado "Tradução" WTF?

Foi útil?

Solução

Defina Putty para interpretar os dados recebidos como UTF8 na janela -> Tradução "Definir os dados dos dados recebidos".

Outras dicas

O Windows não pode lidar com o UTF8 nas mensagens de console e sistema (que o PuTTY usa). Ele quer usar sua página de código de localidade. Este é um problema comum e conhecido, e não é solucionável sem reescrever o cmd.exe ou usar uma ferramenta de linha de comando diferente.

A Microsoft nunca realmente se incomodou com as codificações fora de seu próprio mundo, o que resulta em códigos específicos do Windows estranhos.

Talvez você possa alterar a codificação de massa em algum lugar em suas opções para que ela possa pelo menos se comunicar corretamente com a CLI do MySQL?

Seu cliente de terminal deve ser configurado usando o UTF8. Seu ambiente de shell no servidor também deve ser configurado como UTF8. Você pode conferir com o seguinte comando.

locale

Depende da distribuição (suponho que você esteja usando o Linux) como o sistema prefere como você corrige as informações do local, se necessário. Por exemplo, o Debian (e, eu acho, o Ubuntu) pede que você use o seguinte comando para reconfigurar as configurações de localidade.

dpkg-reconfigure locales

Perceber; Não tenho certeza se eles mudaram isso, não testaram há algum tempo. :-)

É claro que você pode definir os locais no shell cada vez que efetuar login ou em seu perfil. Eu recomendo que você use o método da distribuição para fazê-lo (se você precisar fazer isso, afinal :-)).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top