
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 locale
no Servidor A, obtive LANG=pl_PL.UTF-8
Outras variáveis, exceto LANGUAGE
e LC=ALL
també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 locale
no servidor B, então LANG=en_US.UTF-8
. Outras variáveis, exceto LANGUAGE
e LC=ALL
també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-8
caracteres 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 -a
Saí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 -a
e locale -m
certifique-se de que o Servidor B tenha as localidades e conjuntos de caracteres corretos instalados para interpretar corretamente pl_PL.UTF-8