GNU/Linux >> Znalost Linux >  >> Linux

Několik otázek o kódování znaků souborového systému na linuxu

Trochu jsem přeformuloval vaše otázky z důvodů, které by měly být zřejmé, když je budete číst v pořadí.

1. Je možné nakonfigurovat linuxový souborový systém pomocí pevného kódování znaků pro ukládání názvů souborů bez ohledu na prostředí LANG/LC_ALL?

Ne, to není možné:jak uvádíte ve své otázce, název souboru UNIX je pouze posloupnost bajtů; jádro neví nic o kódování, které je výhradně konceptem uživatelského prostoru (tj. na úrovni aplikace).

Jinými slovy, jádro neví nic o LANG /LC_* , takže jej nelze přeložit.

2. Je možné nechat různé názvy souborů odkazovat na stejný soubor?

Můžete mít více záznamů v adresáři odkazujících na stejný soubor; můžete to udělat pomocí pevných odkazů nebo symbolických odkazů.

Uvědomte si však, že názvy souborů, které nejsou platné v aktuálním kódování (např. váš znakový řetězec GBK, když pracujete v národním prostředí UTF-8), se zobrazí špatně, pokud vůbec.

3. Je možné opravit jádro tak, aby překládalo kódování znaků mezi souborovým systémem a aktuálním prostředím?

Nemůžete opravit jádro Chcete-li to provést (viz 1.), ale můžete - teoreticky - opravit knihovnu C (např. glibc), aby provedla tento překlad, a vždy převést názvy souborů na UTF-8, když volá jádro, a převést je zpět na aktuální kódování, když čte název souboru z jádra.

Jednodušším přístupem by mohlo být napsat překryvný souborový systém pomocí FUSE, který pouze přesměruje jakýkoli požadavek souborového systému na jiné místo po převodu názvu souboru do/z UTF-8. V ideálním případě byste mohli připojit tento souborový systém v ~/trans a když je proveden přístup k~/trans/a/GBK/encoded/path pak souborový systém FUSE skutečně přistupuje k/a/UTF-8/encoded/path .

Problém s těmito přístupy je však:co uděláte se soubory, které již existují ve vašem souborovém systému a nejsou kódovány UTF-8? Nemůžete je jednoduše předat nepřeložené, protože pak nevíte, jak je převést; nemůžete je porušit překladem neplatných sekvencí znaků do ? protože by to mohlo způsobit konflikty...


Linux
  1. 25 nejčastějších otázek a odpovědí v rozhovoru pro Linux

  2. Komprimovaný souborový systém uvnitř souboru v Linuxu?

  3. Použití příkazu mkfs v Linuxu k formátování systému souborů na disku nebo oddílu

  1. Jak vytvořit systém souborů ZFS pomocí komprese souborů v systému Linux

  2. Otázky k rozhovoru s Linuxem:Otevřít soubory / Otevřít deskriptory souborů

  3. Linuxový souborový systém se plní, i když nejsou žádné velké soubory nebo adresáře

  1. Jak převést soubory do kódování UTF-8 v Linuxu

  2. Linux – všechno je soubor?

  3. Jak umístit/uložit soubor do paměti v linuxu?