Debido a una gran cantidad de trabajos de intercambio de archivos entre Windows ( codificación GBK ) y Linux ( codificación UTF-8 ), encontrará problemas de codificación de caracteres fácilmente, tales como:
- archivos zip / tar cuyo nombre contiene caracteres chinos en el sistema Windows, descomprímalo / descomprímalo en el sistema Linux.
- ejecute la aplicación web Java migrada heredada (diseñada en el sistema Windows, usando codificación GBK en JSP) que escribe en el disco archivos con codificación GBK.
- ftp get / put GBK-encoding-named files entre el servidor FTP de Windows y el cliente Linux.
- cambiar el entorno LANG en Linux.
El problema común de lo mencionado anteriormente es la localización / nomenclatura de archivos. Después de buscar en Google, recibí un artículo sobre el uso de Unicode en Linux http://www.linux.com/archive/feed/39912 , que decía:
el sistema operativo y muchas utilidades no se dan cuenta de qué caracteres representan los bytes en los nombres de archivo.
Por lo tanto, es posible tener 2 archivos .txt con codificación diferente:
[root@fedora test]# ls
???? 中文
[root@fedora test]# ls | iconv -f GBK
中文
涓iconv: illegal input sequence at position 7
[root@fedora test]# ls 中文 && ls $'\xd6\xd0\xce\xc4'|iconv -f gbk
中文
中文
Preguntas:
- ¿Es posible configurar el sistema de archivos de Linux usando codificación de caracteres fijos (como NTFS usa UTF-16 internamente) para almacenar nombres de archivos independientemente del entorno LANG / LC_ALL?
- O, lo que realmente quiero preguntar es: ¿Es posible dejar que el nombre de archivo 中文 .txt (
$'\xe4\xb8\xad\xe6\x96\x87.txt'
) en el entorno zh_CN.UTF-8 y el nombre de archivo 中文 .txt ($'\xd6\xd0\xce\xc4.txt'
) en el entorno zh_CN.GBK se refieran al mismo archivo ? - Si no es configurable, ¿es posible parchear el núcleo para traducir la codificación de caracteres entre el sistema de archivos y el entorno actual (solo una pregunta, no solicitar la implementación)? y cuánto efecto tiene si es posible?