เนื่องจากการแลกเปลี่ยนไฟล์จำนวนมากทำงานระหว่าง Windows (การเข้ารหัสGBK ) และ Linux (การเข้ารหัส UTF-8 ) มันจะพบปัญหาการเข้ารหัสอักขระได้อย่างง่ายดายเช่น:
- ไฟล์ zip / tar ที่มีชื่อมีตัวอักษรจีนในระบบ Windows ให้แตกซิป / untar ในระบบ Linux
- เรียกใช้เว็บแอปพลิเคชัน java แบบเก่าที่ย้ายข้อมูล (ออกแบบบนระบบ Windows โดยใช้การเข้ารหัส GBK ใน JSP) ซึ่งเขียนไฟล์ที่เข้ารหัสด้วยชื่อ GBK ลงในดิสก์
- ftp รับ / ใส่ไฟล์ที่มีชื่อเข้ารหัส GBK ระหว่างเซิร์ฟเวอร์ Windows FTP และไคลเอนต์ Linux
- เปลี่ยนสภาพแวดล้อม LANG ใน Linux
ปัญหาทั่วไปของที่กล่าวถึงก่อนหน้าคือการระบุตำแหน่งไฟล์ / หลังจาก googled ฉันได้รับบทความการใช้ Unicode ใน Linux http://www.linux.com/archive/feed/39912ก็กล่าวว่า:
ระบบปฏิบัติการและยูทิลิตี้ต่าง ๆ ไม่ทราบว่าอักขระใดที่ไบต์ในชื่อไฟล์แสดง
ดังนั้นจึงเป็นไปได้ที่จะมีไฟล์ 2 中文 .txt ที่มีการเข้ารหัสแตกต่างกัน:
[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
中文
中文
คำถาม:
- เป็นไปได้หรือไม่ที่จะกำหนดค่าระบบไฟล์ linux ใช้การเข้ารหัสอักขระคงที่ (เช่นNTFSใช้ UTF-16 ภายใน) เพื่อจัดเก็บชื่อไฟล์โดยไม่คำนึงถึงสภาพแวดล้อม LANG / LC_ALL?
- หรือสิ่งที่ฉันต้องการถามคือ: เป็นไปได้ไหมที่จะปล่อยให้ชื่อไฟล์中文 .txt (
$'\xe4\xb8\xad\xe6\x96\x87.txt'
) ในสภาพแวดล้อม zh_CN.UTF-8 และชื่อไฟล์中文 .txt ($'\xd6\xd0\xce\xc4.txt'
) ในสภาพแวดล้อม zh_CN.GBK อ้างถึงไฟล์เดียวกัน ? - หากไม่สามารถกำหนดค่าได้คุณสามารถแก้ไขเคอร์เนลเพื่อแปลการเข้ารหัสอักขระระหว่างระบบไฟล์และสภาพแวดล้อมปัจจุบันได้หรือไม่ และประสิทธิภาพจะมีผลกระทบเท่าใดหากเป็นไปได้