Karena banyak pertukaran file berfungsi antara Windows ( GBK encoding) dan Linux ( UTF-8 encoding), ia akan menghadapi masalah pengkodean karakter dengan mudah, seperti:
- file zip / tar yang namanya berisi karakter Cina di sistem Windows, unzip / untar di sistem Linux.
- menjalankan migrasi aplikasi web lawas java (dirancang pada sistem Windows, menggunakan pengkodean GBK di JSP) yang menulis file yang diberi nama pengodean GBK ke disk.
- ftp dapatkan / letakkan file yang diberi nama GBK-encoding antara Windows FTP server dan klien Linux.
- beralih lingkungan LANG di Linux.
Masalah umum yang disebutkan sebelumnya adalah mencari / penamaan file. Setelah googled, saya mendapat artikel Menggunakan Unicode di Linux http://www.linux.com/archive/feed/39912 , katanya:
sistem operasi dan banyak utilitas tidak menyadari karakter apa yang mewakili byte dalam nama file.
Jadi, dimungkinkan untuk memiliki 2 file 中文 .txt dengan penyandian berbeda:
[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
中文
中文
Pertanyaan:
- Apakah mungkin untuk mengkonfigurasi sistem file linux menggunakan pengkodean karakter tetap (seperti NTFS menggunakan UTF-16 secara internal) untuk menyimpan nama file terlepas dari lingkungan LANG / LC_ALL?
- Atau, yang sebenarnya ingin saya tanyakan adalah: Apakah mungkin membiarkan nama file 中文 .txt (
$'\xe4\xb8\xad\xe6\x96\x87.txt'
) di lingkungan zh_CN.UTF-8 dan nama file 中文 .txt ($'\xd6\xd0\xce\xc4.txt'
) di lingkungan zh_CN.GBK merujuk ke file yang sama ? - Jika tidak dapat dikonfigurasi, apakah mungkin untuk menambal kernel untuk menerjemahkan pengkodean karakter antara sistem file dan lingkungan saat ini (hanya pertanyaan, bukan meminta implementasi)? dan berapa banyak efek kinerja jika itu memungkinkan?