A causa di molte operazioni di scambio di file tra Windows ( codifica GBK ) e Linux ( codifica UTF-8 ), si verificheranno facilmente problemi di codifica dei caratteri, come:
- file zip / tar il cui nome contiene caratteri cinesi sul sistema Windows, decomprimilo / decomprimilo nel sistema Linux.
- eseguire un'applicazione Web java legacy migrata (progettata su sistema Windows, utilizzando la codifica GBK in JSP) che scrive su disco file con nome codifica GBK.
- ftp ottiene / inserisce file con nome codifica GBK tra il server FTP di Windows e il client Linux.
- cambia ambiente LANG in Linux.
Il problema comune di cui sopra è la localizzazione / denominazione dei file. Dopo aver cercato su Google, ho ricevuto un articolo su Unicode in Linux http://www.linux.com/archive/feed/39912 , che diceva:
il sistema operativo e molte utility non comprendono quali caratteri rappresentano i byte nei nomi dei file.
Quindi, è possibile avere 2 file 中文 .txt con codifica diversa:
[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
中文
中文
Domande:
- È possibile configurare il filesystem linux usando una codifica a caratteri fissi (come NTFS usa internamente UTF-16) per memorizzare i nomi dei file indipendentemente dall'ambiente LANG / LC_ALL?
- Oppure, ciò che voglio effettivamente chiedere è: è possibile lasciare che il nome file 中文 .txt (
$'\xe4\xb8\xad\xe6\x96\x87.txt'
) nell'ambiente zh_CN.UTF-8 e il nome file 中文 .txt ($'\xd6\xd0\xce\xc4.txt'
) nell'ambiente zh_CN.GBK si riferiscano allo stesso file ? - Se non è configurabile, allora è possibile patchare il kernel per tradurre la codifica dei caratteri tra il file system e l'ambiente corrente (solo una domanda, non richiedere l'implementazione)? e quante prestazioni hanno effetto se è possibile?