- Home
- Categorie
- Coding e Sistemistica
- PHP
- Codifica UTF8-bi
-
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!!!
-
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
-
e per quanto riguarda il futuro supporto di php e UTF8, come sarà la situazione???
Ps. grazie di prima, molto utile
-
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
-
e io settendo nel php.ini di codificare l'input e decodificare l'output,
che problemi potrei incontrare????
-
@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