Ze względu na dużą wymianę plików między systemem Windows ( kodowanie GBK ) a Linuksem ( kodowanie UTF-8 ) łatwo napotka problemy związane z kodowaniem znaków, takie jak:
- Pliki zip / tar, których nazwa zawiera chińskie znaki w systemie Windows, rozpakuj / rozpakuj w systemie Linux.
- uruchom migrowaną starszą aplikację internetową Java (zaprojektowaną w systemie Windows, używając kodowania GBK w JSP), która zapisuje na dysku pliki o nazwie kodowania GBK.
- ftp pobierz / umieść pliki o nazwie kodowania GBK między serwerem FTP Windows a klientem Linux.
- przełącz środowisko LANG w systemie Linux.
Częstym problemem wspomnianych wcześniej jest lokalizacja / nazewnictwo plików. Po przejrzeniu google dostałem artykuł Używanie Unicode w Linuksie http://www.linux.com/archive/feed/39912 :
system operacyjny i wiele narzędzi nie zdają sobie sprawy, jakie znaki reprezentują bajty w nazwach plików.
Możliwe jest więc posiadanie 2 中文 plików .txt z innym kodowaniem:
[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
中文
中文
Pytania:
- Czy możliwe jest skonfigurowanie systemu plików Linux przy użyciu stałego kodowania znaków (np. NTFS wewnętrznie korzysta z UTF-16) do przechowywania nazw plików niezależnie od środowiska LANG / LC_ALL?
- Lub, tak naprawdę chcę zapytać: czy jest możliwe, aby nazwa pliku 中文 .txt (
$'\xe4\xb8\xad\xe6\x96\x87.txt'
) w środowisku zh_CN.UTF-8 i nazwa pliku 中文 .txt ($'\xd6\xd0\xce\xc4.txt'
) w środowisku zh_CN.GBK odnosiła się do tego samego pliku ? - Jeśli nie można go skonfigurować, to czy jest możliwe załatanie jądra w celu przetłumaczenia kodowania znaków między systemem plików a bieżącym środowiskiem (tylko pytanie, a nie prośba o wdrożenie)? i ile efektu wydajności, jeśli to możliwe?