Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Warning: cannot yet handle MBCS in html_entity_decode()!

    Quì ragazzi qualcosa mi sfugge.

    Allora, ho iniziato a fare un sito internet tempo fa, nei ritagli di tempo perché facendo come lavoro il programmatore improntato sul web (e non solo) quando torno a casa la sera un pò mi disturba il mettermi a programmare.

    Siccome so quanto snervano i charset ho deciso sin dal principio quale adottare: UTF-8.

    Le ragioni erano:

    Il sito era su Aruba con piattaforma Linux (che come charset di dafault usa UTF-8).
    Il sito era fatto in PHP che lavora bene con più charset.
    Il database era Mysql, che di dafult usa UTF-8.
    Diciamocela, UTF-8 stravince perché è meglio e gran parte dei siti che vedo sono in UTF-8.

    Ho creato questo sito blindatissimo, con dei vari sistemi per prevenire l'inserimento di caratteri che potrebbero in un secondo momento risultare mal visti.

    Andava tutto benissimo, fino a questa mattina, quando ho iniziato a mettere sul sito il lavoro fatto fino ad ora.

    Sulla mia macchina uso PHP 5.2.5
    Su Aruba c'è il 4.4.7

    Potevo già immaginare che forse qualche piccolo problema di incompatibilità poteva esserci e mi ero rassegnato a questo, ma quello che mi è accaduto ha dell'inverecondo.

    Mi esce sulle pagine amministrative questo errore:

    Warning: cannot yet handle MBCS in html_entity_decode()!

    Allora penso che forse html_entity_decode() non era contemplato dalla versione in uso di PHP, controllo sul sito di www.php.net, dove dice che è implementata dalla versione 4.3 in poi.

    "Ma allora sto in regola!"

    Cerco sul web.

    Trovo una pagina bugs sempre sul sito www.php.net.

    Un utente si lamenta della mia stessa cosa.

    (traducendo sommariamente dall'inglese)

    ... ho messo sto codice... mi restituisce questo errore... non capisco...

    Risposta loro:

    Si, abbiamo riscontrato un bug del PHP quando con questa funzione si tenta di convertire un'entità html in UTF-8, il bug è stato corretto nella versione 5 ma non verrà corretto nelle versioni precedenti....




    Cioè, dico, cioè, cioè (un pò come Peter Griffin) cioè, cioè.

    Io ho fatto un intero sito, non dico una paginetta, un intero sito in UTF-8 compreso il database e scopro che la funzione centrale che ho utilizzato per garantire una totale sicurezza di non avere problemi con la codifica non funziona, per un bug(!), proprio con la codifica nativa di linux... su un linguaggio nativo del linux...

    Allora per essere sicuro ho fatto una prova, ho creato una pagina UTF-8 e salvata in UTF-8 con questo codice all'interno:
    Codice PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Test UTF-8</title>
    </head>

    <body>
    <?php
    echo(html_entity_decode("&agrave;",ENT_QUOTES,"UTF-8"));
    ?>
    </body>
    </html>
    Poi ho creato il corrispettivo in iso-8859-1, creandola e salvandola in iso-8859-1.
    Codice PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Test ISO</title>
    </head>

    <body>
    <?php
    echo(html_entity_decode("&agrave;",ENT_QUOTES,"ISO-8859-1"));
    ?>
    </body>
    </html>
    Bene, nel primo caso mi escono eoni di errori tutti uguali (si, è solo un carattere da convertire ma non si capisce perché esce un bel pò di volte lo stesso errore), nel secondo caso invece esce una bellissima à

    Sono avvilito e sconcertato.

    Ho passato tutta la mattina a riconvertire il sito e il database in iso-8859-1.

    Mi tagliassero le mani la prossima volta che uso UTF-8.


  2. #2
    Utente di HTML.it L'avatar di r1cky`
    Registrato dal
    Feb 2007
    Messaggi
    432
    Il supporto a php4 è terminato, sarebbe anche ora che gli hoster mettessero a disposizione php5 ai proprio utenti.

  3. #3
    Su questo non hai torto, però la cosa che m'inquieta è che proprio con UTF-8 da quel problema, l'avesse dato con ISO si poteva anche dire "Beh, che pretendi? Potevi usare UTF-8!" un pò come quando uno compra una Fiat e scopre subito qualche magagna In questo caso è proprio la codifica più usata nell'ambito open source che da problemi, mi sembra strano che non l'abbiano corretto anche nelle versioni precedenti...

  4. #4
    Utente di HTML.it L'avatar di r1cky`
    Registrato dal
    Feb 2007
    Messaggi
    432
    Bisognerebbe vedere quando è stato riportato il bug e quanto è stato ritenuto critico
    In ogni caso se il tuo hoster ti avesse messo a disposizione php5, cosa che dovrebbe fare, questo problema non si sarebbe neanche posto :P
    Prima di convertire tutto comunque potevi dare un occhio a questa funzione: http://it.php.net/manual/it/function...code.php#75153

  5. #5
    L'hoster è Aruba, con quello che costa è già tanto che php ci gira

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.