Ik moet met een socket een bron uitlezen. Dit zou geen probleem hoeven zijn, ware het niet dat de server altijd UTF-8 oplevert. Het gaat om een html bron, via http server en ook al haal ik utf-8 uit accept-charset, de server blijft dat sturen.
Goed, ik lees de bron op de volgende manier uit (versimpeld):
Probleem is nu dat zodra ik die $tmp dump ik af en toe wat rare tekens zie opduiken waarvan ik denk dat ze door de UTF-8 encoding komen. Aan het begin van de body zie ik "1ff8" en halverwege een paar keer "2000".
Ik heb al het een en ander geprobeerd om de tekst om te zetten naar gewone ASCII, maar dit heeft nog niet mogen baten. Het gebruik van de multi-byte functies is helaas uitgesloten omdat dit niet ondersteund wordt op de server.
Wel weet ik dat dit probleem niet optrad bij het gebruik van file_get_contents. Deze functie kan ik echter niet gebruiken omdat ik controle moet hebben over de verzonden headers.
Goed, ik lees de bron op de volgende manier uit (versimpeld):
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| /** * Open socket and send header */ $socket=fsockopen($url['host'],80); fwrite($socket,$header); /** * Start reading all the responses from the server */ /** * Read until we get EOF from the server */ $tmp=""; while (!feof($socket)) { $tmp.=fgets($socket, 1024); } fclose($socket); echo $tmp; |
Probleem is nu dat zodra ik die $tmp dump ik af en toe wat rare tekens zie opduiken waarvan ik denk dat ze door de UTF-8 encoding komen. Aan het begin van de body zie ik "1ff8" en halverwege een paar keer "2000".
Ik heb al het een en ander geprobeerd om de tekst om te zetten naar gewone ASCII, maar dit heeft nog niet mogen baten. Het gebruik van de multi-byte functies is helaas uitgesloten omdat dit niet ondersteund wordt op de server.
Wel weet ik dat dit probleem niet optrad bij het gebruik van file_get_contents. Deze functie kan ik echter niet gebruiken omdat ik controle moet hebben over de verzonden headers.