
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 locale
en el servidor A, obtengo LANG=pl_PL.UTF-8
otras variables excepto LANGUAGE
y LC=ALL
tambié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 locale
en el servidor B, entonces LANG=en_US.UTF-8
. Otras variables excepto LANGUAGE
y LC=ALL
tambié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 -a
genera:
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 -a
y locale -m
asegúrese de que el servidor B tenga instaladas las configuraciones regionales y los conjuntos de caracteres correctos para interpretar correctamente pl_PL.UTF-8.