Do có rất nhiều hoạt động trao đổi tệp giữa Windows ( mã hóa GBK ) và Linux ( mã hóa UTF-8 ), nó sẽ gặp phải các vấn đề mã hóa ký tự một cách dễ dàng, chẳng hạn như:
- các tệp zip / tar có tên chứa các ký tự tiếng Trung trên hệ thống Windows, giải nén / giải nén nó trong hệ thống Linux.
- chạy ứng dụng web java di sản (được thiết kế trên hệ thống Windows, sử dụng mã hóa GBK trong JSP) để ghi các tệp có tên mã hóa GBK vào đĩa.
- ftp get / đặt các tệp có tên mã hóa GBK giữa máy chủ Windows FTP và máy khách Linux.
- chuyển đổi môi trường LANG trong Linux.
Vấn đề phổ biến của các đề cập trước đó là định vị / đặt tên tệp. Sau khi googled, tôi nhận được một bài viết sử dụng Unicode trong Linux http://www.linux.com/archive/feed/39912 , nó nói:
hệ điều hành và nhiều tiện ích không nhận ra các ký tự mà byte trong tên tệp đại diện.
Vì vậy, có thể có các tệp .txt 2xt với mã hóa khác nhau:
[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
中文
中文
Câu hỏi:
- Có thể cấu hình hệ thống tập tin linux sử dụng mã hóa ký tự cố định (như NTFS sử dụng UTF-16 trong nội bộ) để lưu trữ tên tệp bất kể môi trường LANG / LC_ALL không?
- Hoặc, những gì tôi thực sự muốn đặt ra là: Liệu có thể để cho tên file .txt中文(
$'\xe4\xb8\xad\xe6\x96\x87.txt'
) trong zh_CN.UTF-8 môi trường và tên file .txt中文($'\xd6\xd0\xce\xc4.txt'
) trong môi trường zh_CN.GBK tham khảo cùng một tập tin ? - Nếu nó không thể cấu hình, thì có thể vá kernel để dịch mã hóa ký tự giữa hệ thống tệp và môi trường hiện tại (chỉ là một câu hỏi, không yêu cầu thực hiện)? và hiệu suất con hiệu quả bao nhiêu nếu có thể?