• User Attivo

    Codifica UTF8-bi

    Salve a tutti,
    avrei bisogno di una piccola info,
    ho letto che nel PHP6 ci sarà il supporto per l'UTF8
    ma adesso con il PHP5 come si fa???

    in sintesi:
    come codifico i caratteri in UTF8 con PHP????

    Grazie a tutti per l'aiuto!!!


  • Moderatore

    la prima cosa da tenere a mente è che UTF-8 è consistente con ASCII, questo vuol dire che tutti i caratteri ASCII sono rappresentati come se stessi ed inoltre che il terminatore di stringa '\0' è ancora valido

    in questo senso puoi leggere, scrivere e confrontare stringhe UTF-8 come se fossero normali stringhe ASCII, ovviamente non puoi confrontare una stringa UTF-8 con una ISO-8859-1, perchè i due set di caratteri sono incompatibili

    per la conversione si usa una libreria esterna e cioè Iconv ed è disponibile un wrapper in PHP http://www.php.net/manual/en/ref.iconv.php

    sia chiaro che tutte le funzioni che fanno leva su un'interpretazione dei caratteri non funzionano con UTF-8, per esempio strlen() ti darà una lunghezza sbagliata, perchè UTF-8 ammette che un carattere sia lungo fino a 6 byte....

    tuttavia, come ho già detto, il confronto può essere fatto in quanto si basa sul confronto byte a byte....il casing, per esempio, pure non funziona con i caratteri il cui codice è > 127


  • User Attivo

    e per quanto riguarda il futuro supporto di php e UTF8, come sarà la situazione???

    Ps. grazie di prima, molto utile


  • Moderatore

    da quel che dicono, hanno intenzione di supportare pienamente Unicode in PHP 6, quindi saranno supportati gli algoritmi di collazione, tokenizzazione, oltre ai vari formati di trasformazione ( UTF-8/16/32 big e little endian ) e ovviamente funzioni di conversione da formati 8 bit a Unicode e da formati Shift a Unicode....

    del resto visto che Unicode ormai è un must non penso possano permettersi di non farlo, altrimenti molti programmatori migreranno verso C#, Python e Ruby


  • User Attivo

    e io settendo nel php.ini di codificare l'input e decodificare l'output,
    che problemi potrei incontrare????


  • Moderatore

    @Digital Daigor said:

    e io settendo nel php.ini di codificare l'input e decodificare l'output,
    che problemi potrei incontrare????

    in generale il file php.ini dovrebbe essere lasciato così com'è, forzare una codifica non supportata da PHP porta ad inconsistenze serie nell'elaborazione....un esempio banale è l'impossibilità di trasformare la E accentata in è, in quanto in UTF-8 è codificata con 2 byte mentre nelle tabelle ISO con un solo byte

    fino ad oggi anche i CMS come Drupal che supportano UTF-8 lo fanno usando librerie esterne o interne progettate appositamente....ovviamente ne risentono le performance, in quanto le librerie interne al CMS sono in PHP e quindi più lente rispetto a quelle della libreria standard PHP che invece sono scritte in C