[PHP] utf8_decode probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Via een xmlparser haal ik een string op die ik in een mysql db wil drukken. Ik heb alleen een probleem met de 's in die string.

Ik utf8_decode de string namelijk alvorens hem in de db te drukken en dan gebeurd het volgende:

voor utf8_decode:
code:
1
<P><STRONG>Algemeen<BR></STRONG>’s Avonds


na utf8_docode:
code:
1
<P><STRONG>Algemeen<BR></STRONG>?s Avonds


Hij maakt dus van ’ -> ?s ipv 's.

Wie weet wat ik verkeerd doe? Thanks voor hulp.

[ Voor 23% gewijzigd door Verwijderd op 25-10-2005 16:17 ]


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Is de pagina waar je het op weer geeft, of de tabel waar je het instopt wel UTF8?

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

utf8_decode decodeert een string van utf8 naar ISO-8859-1. &#8482; is echter geen geldig karakter in ISO-8859-1...

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
tabel waar ik het instop is niet UTF8, anders had ik het niet hoeven converteren. Crisp, heb je suggesties over hoe ik het kan converteren?

Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
Volgens mij is die "’"-reeks ookal ongeldigde UTF8-code.
Lijkt me dat de maker van die string is vergeten html_entities over de string te trekennen alovrens te encoden, ipv erna.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
zou goed kunnen. Hoe kan ik hierachter komen? Het is trouwens een landelijke ASP XML service die ik bequery.

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Zelf gebruik ik iets dergelijks:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function translate_entities($string)
{
    if (function_exists('html_entity_decode'))
    {
        $string = html_entity_decode($string, ENT_QUOTES, 'ISO-8859-15');
    }
    else
    {
        $string = strtr($string, array_flip(get_html_translation_table(HTML_ENTITIES)));
    }

    $string = preg_replace('/&#([0-9]+);?/e', 'chr(\'$1\')', $string);

    return $string;
}

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Crisp, bedankt ik ga hem proberen

Ik gebruikte deze
PHP:
1
2
3
4
5
6
function decodeHTML($string)
{
    $trans_tbl = get_html_translation_table(HTML_ENTITIES);
    $trans_tbl = array_flip ($trans_tbl);
    return strtr ($string, $trans_tbl);
}

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Crisp, ik heb je functie gebruikt. Doet exact hetzelfde. ;(

[ Voor 4% gewijzigd door Verwijderd op 26-10-2005 10:49 ]


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

&#8482; wordt in mijn functie vertaald naar "
†hoeven niet vertaald te worden en zijn gewoon geldige karakters in (in mijn geval) ISO-8859-15, maar ik denk dat dat gewoon een fout is in die feed.

Edit: ik moet natuurlijk wel mijn sourcefile opslaan als UTF-8 :P

ok, †is dus een multi-byte karakter en is volgens mij deze: …
Echter als ik html_entity_decode met UTF-8 gebruikt krijg ik:
Warning: cannot yet handle MBCS in html_entity_decode()! in c:\wwwroot\bla.php on line 22

[ Voor 42% gewijzigd door crisp op 26-10-2005 11:01 ]

Intentionally left blank

Pagina: 1