[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

PHP, Apache og udvidede tegn i filnavne




Jeg er ved at udvikle en web-applikation, der opretter dynamiske HTML-tabeller over et givent bibliotek.

Jeg er imidlertid stødt ind i problemer, når fil- og biblioteksnavne som skal indekseres indeholder danske bogstaver; de vises ganske enkelt ikke korrekt.

Jeg har svært ved at overskue, hvordan man nemt kan løse dette problem, så jeg forsøger at give en oversigt over symptomerne:

- Når man lader Apache generere et indeks selv (mod_autoindex), bliver udvidede tegn kodet i noget der ligner Unicode (f.eks. %9B for 'ø') i adressefeltet. HTML-headeren viser dog blot et '?', og jeg kan se i kildekoden til siden, at Apache reelt indsætter et ' >' i stedet for 'ø'. I status-baren i browseren vises et kvadrat i stedet for tegnet. Links til filer og underbiblioteker i dette indeks fungerer dog, når man klikker på dem, selvom det ikke ser pænt ud.

- Når jeg bruger PHP's readdir()-funktion kommer fil- og biblioteksnavne tilbage på samme måde som i Apache-genereret HTML-kode (' >' i stedet for 'ø' osv.) Laver man et HTML-link med navnet, giver det en fejl.

- Hvis man kører rawurleencode() på filnavnet, kan man linke til det korrekt, selvom det ikke ser pænt ud. Det bliver kodet ligesom Apache selv koder det med mod_autoindex.

- Hvis man bruger PHP's chdir() til at skifte til et bibliotek med udvidede tegn i, får man en fejl, fordi de(t) udvidede tegn, som man har angivet som parameter til funktionen ikke oversættes korrekt.

I Apache's konfiguration er sat
	AddDefaultCharset UTF-8
I php.ini er sat
	default_charset = "utf-8"
I HTML HEAD-delen af den side, der kalder readdir() er sat
	<meta http-equiv="content-type" content="text/html;
	charset=UTF-8">

Det hele afvikles på en umodificeret Debian Woody med compilet Apache 2.0.47 og PHP/4.3.4.

Jeg har testet det i IE6 og Mozilla Firebird 0.7.

Jeg kan ikke forestille mig, at jeg er den første der har haft problemer med dette, men jeg har søgt og søgt efter en løsning, indtil videre uden held. Jeg har overvejet om mbstrings-udvidelsen til PHP er nødvendig, men den nævnes kun i forbindelse med asiatiske sprog og tegnsæt.

Nogen, der har en løsning på dette?

Mvh.
Achton N. Netherclift




Reply to: