Locale názvů souborů na serveru a práce s nimi

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
na1k
Člen | 288
+
0
-

Při psaní jednoduchého prohlížeče soubrů jsem narazil na problém. Windows (localhost) a Linux (ostrý server) používá pro názvy souborů různé kódování. Zatímco Win má zřejmě cp1250, Linux vypadá na utf8, a to mi způsobuje dost velkou nekonzistenci při práci se soubory (samozřejmě hledám univerzální řešení).

Řeší toto Nette nějak? Řešíte to nějak vy? Je v Nette nějaká možnost zjistit jestli jsem na Linuxu nebo ideálnějc která znaková sada se pro filesystém používá?

Vrtá mi to hlavou, protože jsou tu dokonce už i komponenty pro práci se soubory, ale nikde jsem nenašel nic, co by mě alespoň popostrčilo dál. To dělám nějakou začátečnickou chybu a jsem jediný, kdo tohle řeší?

jakubkulhan
Člen | 55
+
0
-

na1k napsal(a):

Je v Nette nějaká možnost zjistit jestli jsem na Linuxu nebo ideálnějc která znaková sada se pro filesystém používá?

OS jde zjistit pomocí konstanty PHP_OS (viz předdefinované konstanty). UNIXovým filesystémům je úplně jedno, v jaké znakové sadě je název souboru – pro ně je to všecko Céčkovský řetězec (posloupnost bytů ukončená NULovým).

na1k
Člen | 288
+
0
-

Myslím, že tady máš pravdu jen zpola – utf je multibyte (jeden znak = více bytů) a pokud s ním chceš pracovat v Céčku, je potřeba vědět, že jde právě o utf.

Na druhou stranu díky za postrčení alespoň k té konstantě. Moc se mi to řešení nelíbí, ale asi nebudu mít na výběr a budu to muset rozlišovat podle OS.

Stejně by mě ale zajímalo, jak to řeší ostatní – používáte snad Linux i pro vývojové prostředí?

jakubkulhan
Člen | 55
+
0
-

na1k napsal(a):

Myslím, že tady máš pravdu jen zpola – utf je multibyte (jeden znak = více bytů) a pokud s ním chceš pracovat v Céčku, je potřeba vědět, že jde právě o utf.

Proto jsem psal posloupnost bytů, ne znaků – o znaky filesystému vůbec nejde. Psal jsem UNIXové filesystémy – u takové FATky, nebo NTFS je to něco jiného, protože ty potřebují provádět case-insensitive porovnávání.