Ik ben bezig met een applicatie waarbij ik bestandsnamen van een op een Linux PHP server gemounte Windows share moet weergeven en opslaan in een database. Dit werkt allemaal goed totdat er speciale characters in de bestandsnaam staan. Ik heb al rekening gehouden met de charset van de pagina, ik gebruik charset iso-8859-1.
Op het moment wordt bijvoorbeeld "β" een vierkantje op de pagina en een "á" in de broncode.
Op het moment lees ik de directory op deze manier uit:
Ik mount de schijf ook via php op deze manier:
Op het moment dat ik nu $lok (padnaam) wil echo'en krijg ik het verkeerde speciale character te zien, of geen.
In de php manual wordt niks gezegd over speciale characters bij het gebruik van opendir() en readdir(). Het lijkt mij dat ik ergens een charset moet definieren maar ik weet zo niet waar.
Op het moment wordt bijvoorbeeld "β" een vierkantje op de pagina en een "á" in de broncode.
Op het moment lees ik de directory op deze manier uit:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| //open de meegegeven directory if ($handle = opendir($s_dir)) { //blijf inhoud lezen totdat er geen inhoud meer is. while (false !== ($file = readdir($handle))) { //controleer of het gevonden bestand niet "." is if($file !== '.') { //controleer of het gevonden bestand niet ".." is if($file !== '..') { //maak het padnaam compleet, het gevonden gedeelte word //achter de map waarin hij is gevonden geplakt. $lok = $s_dir.'/'.$file; //stop hem in de array. array_push($a_dirFindings, $lok); } } } //sluit de map closedir($handle); } |
Ik mount de schijf ook via php op deze manier:
PHP:
1
2
| echo exec('mkdir /mnt/public'); echo exec('sudo mount -t cifs -o username=user, password=*** //192.168.0.3/public /mnt/public'); |
Op het moment dat ik nu $lok (padnaam) wil echo'en krijg ik het verkeerde speciale character te zien, of geen.
In de php manual wordt niks gezegd over speciale characters bij het gebruik van opendir() en readdir(). Het lijkt mij dat ik ergens een charset moet definieren maar ik weet zo niet waar.