Caracteres especiais não exibidos corretamente

Caracteres especiais não exibidos corretamente

Tenho problemas ao copiar arquivos do Servidor A (Debian 7.4) para o Servidor B (Debian 7.4). Caracteres especiais poloneses em arquivos não são exibidos corretamente no Servidor B (no mcedit).

Criei um arquivo com caractere especial polonês no servidor A. Ele é exibido corretamente no Servidor A. Quando executo localeno Servidor A, obtive LANG=pl_PL.UTF-8Outras variáveis, exceto LANGUAGEe LC=ALLtambém estão definidas como pl_PL.UTF-8. Em seguida, coloco o arquivo tar e, no Server BI, faço o download do arquivo tarred com o comando wget. No arquivo untar do Server BI e quando olho o conteúdo do arquivo (mcedit), as letras polonesas são exibidas incorretamente. Existem "diamantes" em vez de caracteres especiais. Quando executo localeno servidor B, então LANG=en_US.UTF-8. Outras variáveis, exceto LANGUAGEe LC=ALLtambém, são definidas como en_US.UTF-8.

Então executo migrações de banco de dados (script php) e os dados corrompidos são inseridos no banco de dados. Quando adiciono linhas na migração, os caracteres especiais polidos são substituídos por strings como Å›(a letra polonesa śé substituída por Å›).

Verifiquei no mcedit que o arquivo no servidor A e no servidor B tem o mesmo valor em ambos os servidores. A letra polsih 'ś' é C5 9B (hex) em ambas as máquinas.

O pior é que toda vez que há caracteres especiais tenho que verificar e corrigir manualmente os erros no banco de dados.

Provavelmente quando edito os valores das colunas no banco de dados pelo script de migração php, ele também corrompe meus dados no banco de dados. Depois de ler os dados da tabela, manipulei e salvei e meus dados também foram corrompidos.

Se eu alterar as localidades no Servidor B para pl_PL.UTF-8caracteres especiais em outros idiomas (como alemão, tcheco etc.) funcionarão, OK? Se houver problema com fontes, por que as migrações de banco de dados também estão corrompidas? Estou usando UTF-8, então todos os caracteres especiais de todos os idiomas devem ser exibidos corretamente? Como exibir corretamente os caracteres especiais de cada idioma e o que fazer para que as migrações do php sejam realizadas corretamente?

ATUALIZAÇÃO 1: Saídas
do Servidor A locale -a:

C
C.UTF-8
pl_PL.utf8
POSIX

locale -aSaídas do servidor B :

C
C.UTF-8
en_US.utf8
POSIX

Em ambos os servidores locale -m gera muitos charmaps (parece o mesmo em ambas as máquinas)

Responder1

Verifique a saída locale -ae locale -mcertifique-se de que o Servidor B tenha as localidades e conjuntos de caracteres corretos instalados para interpretar corretamente pl_PL.UTF-8

informação relacionada