Trong nội bộ, hầu hết các hệ thống tệp lưu trữ byte: trình điều khiển hệ thống tệp không quan tâm đến ý nghĩa của byte. Trình điều khiển hệ thống tệp chung trên Linux và hầu hết các thông báo hiện đại khác cho phép mọi byte khác ngoài /
và byte null xuất hiện trong tên tệp.
Có các hệ thống tệp có thể có các ràng buộc mã hóa - thường là các hệ thống tệp không phải là nguồn gốc như FAT hoặc NTFS. Một số hệ thống tệp mạng như Samba có thể dịch giữa mã hóa máy chủ và mã hóa máy khách; bạn sẽ cần đảm bảo rằng cấu hình máy chủ và máy khách được kết hợp chặt chẽ.
Thông thường, trên hầu hết các hệ thống, các byte tạo nên tên tệp được hiểu là UTF-8. Nếu bạn chạy một ứng dụng diễn giải tên tệp dưới dạng ký tự, ví dụ ứng dụng truyền tên qua FTP, bạn có thể cần định cấu hình ứng dụng này để thông báo rằng tên tệp của bạn được mã hóa theo UTF-8. Đặt môi trường LC_CTYPE
thành ngôn ngữ UTF-8 giống như en_US.UTF-8
mẹo cho nhiều ứng dụng dòng lệnh.
Nếu bạn lưu trữ tệp trên hệ thống không hỗ trợ UTF-8, điều đó không thành vấn đề. Các byte sẽ giữ nguyên. Bạn sẽ không thể hiển thị các ký tự tạo nên tên tệp, nhưng nếu bạn sao chép các tệp đó trở lại hệ thống hỗ trợ UTF-8, các byte tương tự sẽ vẫn hiển thị dưới dạng các ký tự UTF-8.
Nếu bạn đang viết ứng dụng của riêng mình, sử dụng UTF-8 trong nội bộ và, bất cứ khi nào có thể, để lưu trữ và truyền tải là một ý tưởng hay.