[PHP] String naar UTF-8 coderen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • GewoonNico
  • Registratie: April 2003
  • Laatst online: 21:11
Ik wil een aantal pagina's van een andere website importeren.
Deze pagina's zijn in het iso 8859-1 formaat opgeslagen.
De database waar deze pagina's in komen te staan is volledig utf-8

Ik laad de pagina's als volgt in:
code:
1
2
3
4
<?
$retrieve = @file_get_contents($file);
$retrieve = utf8_encode($retrieve);
?>


Wanneer ik deze opsla in de database verdwijnt alle data na bijvoorbeeld een €-teken of tekens als é ë ï etc

Wat doe ik fout?

Acties:
  • 0 Henk 'm!

  • Chesta
  • Registratie: November 2004
  • Laatst online: 27-08 06:55
Als je dit doet zijn die tekens waarschijnlijk al weg, utf8_encode() stript ze eruit.

PHP:
1
2
3
4
5
6
7
<?
$retrieve = @file_get_contents($file);
$retrieve = utf8_encode($retrieve);

echo $retrieve;

?>

[ Voor 38% gewijzigd door Chesta op 14-08-2007 18:49 ]

End of Transmission


Acties:
  • 0 Henk 'm!

  • Japius
  • Registratie: April 2003
  • Laatst online: 30-08 20:57
Misschien moet je eens een kijkje nemen bij de manual over de Multibyte String functions. Daar moet het mee lukken!

Acties:
  • 0 Henk 'm!

  • pimlie
  • Registratie: November 2000
  • Laatst online: 00:01
Als je MySQL gebruikt kan je ook gewoon de character set van je connectie op iso-latin-1 zetten. Indien het betreffende veld in je database dan de character set utf8 heeft zal MySQL het automatisch voor je converteren.

code:
1
mysql_query("SET NAMES 'iso-8859-1'", $c);


Zie hier

Acties:
  • 0 Henk 'm!

  • akaIDIOT
  • Registratie: Januari 2005
  • Laatst online: 06-08 18:13
Zoals Japius al zegt heeft php hier een hele fijne eigen library voor. mb_convert_encoding is waarschijnlijk wat je zoekt:
PHP:
1
2
$retrieve = @file_get_contents($file);
$retreive = mb_convert_encoding($retreive, "UTF-8", "ISO-8859-1");

should do the trick...

[ Voor 3% gewijzigd door akaIDIOT op 15-08-2007 01:18 . Reden: argumenten mb_convert_encoding omgedraait ;) ]

*stu!ter* *boink*


Acties:
  • 0 Henk 'm!

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 13-09 00:05
De € is simpel; die zit niet in ISO-8859-1. Dat is ook niet gek, die ISO standaard is geratificeerd ver voordat de euro bestond. Vor de overige karakters zul je inderdaad niet alleen moeten aangeven waar je naar toe wil, maar ook waar je vandaan komt - zie akaIDIOT.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


Acties:
  • 0 Henk 'm!

  • GewoonNico
  • Registratie: April 2003
  • Laatst online: 21:11
De oplossing van Pimlie werkte.
Voordat ik de gegevens wegschrijf gebruik ik zijn regel code, bij het uitlezen van de gegevens gebruik ik
mysql_query("SET NAMES utf8");

[ Voor 53% gewijzigd door GewoonNico op 15-08-2007 13:38 ]

Pagina: 1