Nama file UTF 8?


15

Dalam sistem operasi berbasis unix apakah nama file utf6 diizinkan? Jika demikian, saya perlu melakukan sesuatu yang khusus untuk menulis file ke disk.

Biarkan saya jelaskan apa yang saya harapkan. Saya sedang menulis sebuah aplikasi yang akan mentransfer file melalui ftp ke sistem jarak jauh tetapi nama file secara dinamis diatur melalui beberapa set data meta yang berpotensi berada di utf8. Saya bertanya-tanya apakah ada sesuatu yang perlu saya lakukan untuk menulis file ke disk di unix / linux.

Juga sebagai tindak lanjut, adakah yang tahu apa yang akan terjadi jika saya mengunggah nama file utf 8 ke sistem tidak mendukung utf8?

Jawaban:


20

Di Unix / Linux, nama file adalah urutan byte apa pun kecuali untuk garis miring atau NUL. Slash memisahkan komponen path, dan NUL mengakhiri nama path.

Jadi, Anda dapat menggunakan pengodean apa pun yang Anda inginkan untuk nama file. Beberapa aplikasi mungkin mengalami masalah dengan beberapa penyandian jika mereka naif tentang karakter apa yang mungkin ada dalam nama file - misalnya, skrip shell yang ditulis dengan buruk sering tidak menangani nama file dengan spasi.

Lingkungan Unix / Linux modern menangani nama file yang dikodekan UTF-8 dengan baik.


12

Secara internal, sebagian besar filesystem menyimpan byte: driver filesystem tidak peduli tentang apa arti byte. Driver sistem file generik di Linux dan sebagian besar Unix modern lainnya memungkinkan byte selain /dan byte nol muncul dalam nama file.

Ada filesystem yang mungkin memiliki kendala penyandian - biasanya filesystem non-asli seperti FAT atau NTFS. Beberapa sistem file jaringan seperti Samba dapat menerjemahkan antara pengkodean server dan pengkodean klien; Anda harus memastikan bahwa konfigurasi server dan klien koheren.

Secara konvensional, pada kebanyakan sistem, byte yang membentuk nama file ditafsirkan sebagai UTF-8. Jika Anda menjalankan aplikasi yang mengartikan nama file sebagai karakter, misalnya aplikasi yang mentransmisikan nama melalui FTP, Anda mungkin perlu mengkonfigurasi aplikasi ini untuk memberi tahu bahwa nama file Anda dikodekan dalam UTF-8. Mengatur lingkungan LC_CTYPEke seperti UTF-8 seperti en_US.UTF-8melakukan trik untuk banyak aplikasi baris perintah.

Jika Anda menyimpan file di sistem yang tidak mendukung UTF-8, itu tidak masalah. Bytes akan tetap sama. Anda tidak akan dapat menampilkan karakter yang membentuk nama file, tetapi jika Anda menyalin file kembali ke sistem yang mendukung UTF-8, byte yang sama masih akan ditampilkan sebagai karakter UTF-8.

Jika Anda menulis aplikasi Anda sendiri, menggunakan UTF-8 secara internal dan, jika memungkinkan, untuk penyimpanan dan transmisi adalah ide yang bagus.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.