Rare tekens bij file(*.vmg);

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Stephan Vierkant

Stephan Vierkant

20/07/2009 21:41:00
Quote Anchor link
Ik heb al mijn SMS'jes van mijn Nokia-telefoon opgeslagen op mijn pc. Het zijn allemaal losse bestandjes, met deze inhoud:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
BEGIN:VMSG
VERSION:1.1
X-IRMC-STATUS:
X-IRMC-BOX:INBOX
X-NOK-DT:20080624T221242Z
X-MESSAGE-TYPE:DELIVER
BEGIN:VCARD
VERSION:3.0
N:
TEL:+*****
END:VCARD
BEGIN:VENV
BEGIN:VBODY
Date:24.06.2008 22:12:42
U heeft 1 gemiste oproep van +*****.
Laatste oproep:24/06/08, 23:16 uur.
Dit is een gratis sms van T-Mobile, zie www.t-mobile.nl/gemisteoproepsms.
END:VBODY
END:VENV
END:VMSG


Nu wil ik deze sms'jes in een database stoppen met PHP. Ik krijg bij het openen met file(); echter allerlei rare tekens. Ook als ik het bestand gewoon i in de browser open, heb ik dat probleem.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
B�E�G�I�N�:�V�M�S�G�
�V�E�R�S�I�O�N�:�1�.�1�

Weet iemand hoe ik die rare tekens tussendoor kan voorkomen?
 
PHP hulp

PHP hulp

09/11/2024 03:34:02
 
- SanThe -

- SanThe -

20/07/2009 21:54:00
Quote Anchor link
Ik heb geen idee waar het vandaan komt.
Maar als je � weghaalt hou je de gewone tekst over.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);

$array = array('B&#65533;E&#65533;G&#65533;I&#65533;N&#65533;:&#65533;V&#65533;M&#65533;S&#65533;G&#65533;',
                '&#65533;V&#65533;E&#65533;R&#65533;S&#65533;I&#65533;O&#65533;N&#65533;:&#65533;1&#65533;.&#65533;1&#65533;');

foreach($array as $value)
{

    echo str_replace('&#65533;', '', $value) . '<br />';
}


?>

Output:

BEGIN:VMSG
VERSION:1.1
 
Stephan Vierkant

Stephan Vierkant

20/07/2009 21:57:00
Quote Anchor link
Klopt, het gekke is alleen dat de browser (FF3.5 in mijn geval) niet &#65533 laat zien, maar een vierkant blokje met een vraagteken erin.

En het is eigenlijk symptoombestrijding natuurlijk, en dat heb ik liever niet ;).
 
- SanThe -

- SanThe -

20/07/2009 22:04:00
Quote Anchor link
&#65533; zou een character moeten zijn. Als dat onbekend is wordt er inderdaad een blokje neergezet.
 
Stephan Vierkant

Stephan Vierkant

20/07/2009 22:05:00
Quote Anchor link
Maar waarom staat dat character er dan? In het originele bestand (open in kladblok) zit dat er niet.
 
- SanThe -

- SanThe -

20/07/2009 22:07:00
Quote Anchor link
Geen idee.
 
Jelmer -

Jelmer -

20/07/2009 22:41:00
Quote Anchor link
Kan je eens zo'n bestandje onbewerkt ergens uploaden? Het zou zomaar kunnen dat het bestandje een andere charset gebruikt. Normaal zijn alle karakters 1 byte (8 ééntjes en nulletjes) lang, maar omdat je dan maar een heel klein aantal verschillende tekens kan gebruiken, zijn er in de loop der jaren heel wat charsets bijgekomen. Als het bestandje een charset gebruikt die ieder karakter 2 bytes geeft, en je browser heeft dat niet door, en denkt dat die 2e byte een nieuw karakter is (of PHP heeft het niet door, hoe verstuur je die bestanden eigenlijk naar de browser? Haal je ze eerst door htmlentities o.i.d. heen?) dan zou je zoiets kunnen krijgen.
 
Stephan Vierkant

Stephan Vierkant

20/07/2009 22:45:00
Quote Anchor link
Jawel, hier is zo'n file:
[weg]
Gewijzigd op 01/01/1970 01:00:00 door Stephan Vierkant
 
Jelmer -

Jelmer -

20/07/2009 22:52:00
Quote Anchor link
Volgens internet is het UTF-16LE, en inderdaad, als je het met iconv omzet naar UTF-8 ben je die vreemde karakters kwijt.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$data
= file_get_contents('31235391210_2008-06-25.vmg');

echo iconv('utf-16LE', 'utf-8', $data);
?>
 
Stephan Vierkant

Stephan Vierkant

20/07/2009 22:53:00
Quote Anchor link
Bedankt, dit is de oplossing!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.