Wewnętrznie większość systemów plików przechowuje bajty: sterownik systemu plików nie dba o to, co oznaczają bajty. Ogólny sterownik systemu plików w systemie Linux i większości innych współczesnych unikatów pozwala na pojawienie się dowolnego bajtu innego niż /
bajt zerowy w nazwie pliku.
Istnieją systemy plików, które mogą mieć ograniczenia kodowania - zwykle nie-rodzime systemy plików, takie jak FAT lub NTFS. Niektóre sieciowe systemy plików, takie jak Samba, mogą tłumaczyć między kodowaniem serwera a kodowaniem klienta; musisz upewnić się, że konfiguracje serwera i klienta są spójne.
Konwencjonalnie w większości systemów bajty tworzące nazwę pliku są interpretowane jako UTF-8. Jeśli uruchomisz aplikację, która interpretuje nazwy plików jako znaki, na przykład aplikację, która przesyła nazwy przez FTP, może być konieczne skonfigurowanie tej aplikacji, aby informowała, że twoje nazwy plików są zakodowane w UTF-8. Ustawienie środowiska LC_CTYPE
na ustawienia regionalne UTF-8, podobnie jak en_US.UTF-8
w przypadku wielu aplikacji wiersza polecenia.
Jeśli przechowujesz pliki w systemie, który nie obsługuje UTF-8, nie ma to znaczenia. Bajty pozostaną takie same. Nie będziesz mógł wyświetlić znaków tworzących nazwy plików, ale jeśli skopiujesz pliki z powrotem do systemu obsługującego UTF-8, te same bajty będą nadal wyświetlane jako znaki UTF-8.
Jeśli piszesz własną aplikację, dobrym pomysłem jest używanie UTF-8 wewnętrznie oraz, w miarę możliwości, do przechowywania i przesyłania.
Gilles „SO- przestań być zły”
źródło