Los caracteres especiales no se muestran correctamente

Los caracteres especiales no se muestran correctamente

Tengo un problema al copiar un archivo del Servidor A (Debian 7.4) al Servidor B (Debian 7.4). Los caracteres especiales polacos en los archivos no se muestran correctamente en el Servidor B (en mcedit).

Creé un archivo con un carácter especial polaco en el servidor A. Se muestra correctamente en el servidor A. Cuando lo ejecuto localeen el servidor A, obtengo LANG=pl_PL.UTF-8otras variables excepto LANGUAGEy LC=ALLtambién están configuradas en pl_PL.UTF-8. Luego, archivo tar y, en Server BI, descargo el archivo tar con el comando wget. En el archivo descomprimido del servidor BI y cuando miro el contenido del archivo (mcedit), las letras pulidas se muestran incorrectas. Hay "diamantes" en lugar de caracteres especiales. Cuando ejecuto localeen el servidor B, entonces LANG=en_US.UTF-8. Otras variables excepto LANGUAGEy LC=ALLtambién están configuradas en en_US.UTF-8.

Luego ejecuto migraciones de bases de datos (script php) y se insertan datos corruptos en la base de datos. Cuando agrego filas en la migración, los caracteres especiales pulidos se reemplazan por cadenas como Å›(la letra polaca śse reemplaza por Å›).

Verifiqué en mcedit que el archivo en el servidor A y en el servidor B tiene el mismo valor en ambos servidores. La letra polaca 'ś' es C5 9B (hexadecimal) en ambas máquinas.

Lo peor es que cada vez que hay caracteres especiales tengo que verificar y corregir manualmente los errores en la base de datos.

Probablemente, cuando edito los valores de las columnas en la base de datos mediante el script de migración php, también corrompe mis datos en la base de datos. Una vez que leí los datos de la tabla, los manipulé y luego los guardé, y mis datos también se corrompieron.

Si cambio la configuración regional en el servidor B, pl_PL.UTF-8¿funcionarán bien los caracteres especiales en otros idiomas (como alemán, checo, etc.)? Si se trata de un problema con las fuentes, ¿por qué también están dañadas las migraciones de bases de datos? Estoy usando UTF-8, ¿entonces todos los caracteres especiales de cada idioma deberían mostrarse correctamente? ¿Cómo mostrar correctamente caracteres especiales de cada idioma y qué hacer para que las migraciones de PHP se realicen correctamente?

ACTUALIZACIÓN 1:
El servidor A locale -agenera:

C
C.UTF-8
pl_PL.utf8
POSIX

Salidas del servidor B locale -a:

C
C.UTF-8
en_US.utf8
POSIX

En ambos servidores, locale -m genera muchos charmaps (parece igual en ambas máquinas)

Respuesta1

Verifique la salida locale -ay locale -masegúrese de que el servidor B tenga instaladas las configuraciones regionales y los conjuntos de caracteres correctos para interpretar correctamente pl_PL.UTF-8.

información relacionada