PHP include fillista - fel svenska tecken...

Tråden skapades och har fått 6 svar. Det senaste inlägget skrevs .
1

Jag hittar massor med trådar i ämnet men har svårt att applicera dessa på min kod eftersom jag inte kan php. Efter några tappra försök ber jag om hjälp istället.

Jag har en php include som listar filer och visar dessa för nerladdning. Sajten har nu uppdaterats till utf-8 och jag såg för sent att sidorna som listar filer inte klarar svenska tecken längre. Om jag byter tillbaka till ISO-8859-1 så ser det ok ut igen men som sagt är det inte ett alternativ längre.

Kan någon hjälpa mig med en lösning?

<?php

$dir = 'pdf/brev/tidigare';
$url = 'http://www. ___ /pdf/brev/tidigare';
function human_format_size($bytes) {
$formats = array("%d B", "%.1f kB", "%.1f MB", "%.1f GB", "%.1f TB");
$logsize = min((int)(log($bytes)/log(1024)), count($formats)-1);
$size = sprintf($formats[$logsize], $bytes/pow(1024, $logsize));
$size = str_replace('.', ',', $size);
return $size;
}
// Visa inte dessa filer i listan
$ignore_files = array('.', '..');

$dir_handle = opendir($dir);

$items = array();

while (false !== ($item = readdir($dir_handle))) { // För varje objekt i katalogen 
	// Ignorera systemfiler och dolda filer
	if (preg_match("/^[._]/", $item)) continue;
    array_push($items, $item);
}

// Sortera
natsort($items);

// Omvänd ordning
$items = array_reverse($items);
   
// Visa
foreach ($items as $item) {
	$size = human_format_size(filesize($dir.'/'.$item));
	echo '<p><img src="../../bilder/pdf3.gif" align="absmiddle" />  <a href="'.$url.'/'.rawurlencode($item).'">'.$item.'</a>  ('.$size.')</p>';  
}
?>

du kan ju prova med rawurlencode(utf8_encode($str));

är altså apache konfad att använda utf8? eller har du bara bytt kodning på filnamnen i mappen? I så fall räcker de me o konfa apache rätt.

annars hade jag aldrig länkat till filerna direkt. utan sparade de i en databas med id som identifiering och sedan användt detta som identitet vid länkningar i url. tex hej.se/download.php?file=213

Filerna läggs upp av kunden via FTP och de har läsbara namn a la Månadsbrev.pdf.

Sajten ligger hos Levonline. PHP info säger:

PHP Version 4.4.8.

Environment
LANG en_US.iso88591

PHP Variables
_ENV["LANG"] en_US.iso88591

Jag måste f ö be Levonllne uppgradera till PHP 5. Vet inte om det påverkar något.

Är det inte något sånt här som man ska försöka bygga in i koden?
http://se.php.net/manual/en/function.utf8-encode.php

Då var det löst...

På slutet av sista raden i koden står det .$item.

Om man byter ut det mot det här:

.utf8_encode ( $item ).

så konverteras tecknen till UTF-8.

det skrev jag ju i mitt första inlägg? :

"du kan ju prova med rawurlencode(utf8_encode($str)); "

dock så trodde jag att urlen blev fel o inte bara utskriften av namnet. då får du sätta på $item som du nu gjort.

Ursprungligen av =JoNaZ=:

det skrev jag ju i mitt första inlägg? :

"du kan ju prova med rawurlencode(utf8_encode($str)); "

dock så trodde jag att urlen blev fel o inte bara utskriften av namnet. då får du sätta på $item som du nu gjort.

Jag får be om ursäkt men jag fattade inte att det hänvisade till min kod. Jag trodde det var tips om ett allmänt kommande där jag själv skulle bygga in det. Om det hade stått pröva att byta ut ... mot ... så hade jag fattat.

1
Bevaka tråden