2011-12-20 14 views
7

Ho sentito che PHP ha un supporto Unicode molto scarso. Quindi, cosa serve per realizzare un'applicazione Unicode PHP 5 supportata in PHP 5.3+? Il mbstring sarebbe l'unica opzione qui? Come ha fatto Facebook o Yahoo a superare questo limite PHP?Unicode in PHP?

+1

Seguire tutte le istruzioni pubblicate qui. Ti suggerisco di scaricare Notepad ++ e assicurarti di salvare il file come utf8. Molti editori hanno la cattiva abitudine di salvare come ansi che è una schifezza – OptimusCrime

+0

@OptimusCrime Penso che sia la cattiva abitudine del programmatore, non quella di cambiare le impostazioni, il che è possibile per quasi tutti gli editor (almeno quelli con evidenziazione della sintassi) . – feeela

risposta

8

PHP ha alcun supporto di basso livello per qualsiasi codifica. Ma tutto ciò che significa in realtà è che non importa su un livello di lingua . Le stringhe in PHP sono sequenze di byte grezzi, che possono essere in qualsiasi codifica che ti piace. Quando si gestiscono stringhe multi-byte, è necessario fare attenzione a utilizzare la funzione di manipolazione delle stringhe corretta anziché avvitare direttamente il flusso di byte. Quindi l'unico "non-supporto" di Unicode è che non include il concetto di codifica nel linguaggio core stesso, ma si può ancora lavorare con qualsiasi codifica perfettamente bene manipolando le stringhe usando la funzione di stringa appropriata.

In realtà, se si prende solo un po 'di attenzione per mantenere tutto in UTF-8 tutto il tempo, raramente dovrete preoccuparvi di qualsiasi cosa riguardante le codifiche. PHP funziona perfettamente con Unicode.

Per un'ampia copertura di questo argomento, vedere What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text.

+0

+1 per questo link –

1

PHP ha uno scarso supporto Unicode, ma non è impossibile farlo, basta stare attenti con le funzioni che si stanno utilizzando e il loro supporto per Unicode. Questa pagina presenta un buon riepilogo del supporto Unicode per le diverse funzioni ed estensioni http://www.phpwact.org/php/i18n/utf-8

+3

L'articolo collegato è un po 'isterico. L'articolo è stato scritto il 2009-10-21 e ovviamente si riferisce a una versione obsoleta di PHP, che è stata compilata anche senza l'estensione mbstring (la maggior parte dei pacchetti Linux pre-compilati [ad esempio quelli per Debian o Ubuntu] includono mbstring- estensione). Basta usare quell'estensione. – feeela

0

Se i dati provengono da tabelle che utilizzano UTF-8, è sufficiente impostare le intestazioni e il metode corretti e si dovrebbe essere ok (non è necessario codificare nulla):

<?php 
header ('Content-type: text/html; charset=utf-8'); 
?> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
</head> 
<body> 

</body> 
</html> 
+0

Questo non cambierebbe nulla sulla gestione delle stringhe via PHP, ad es. in metodi come 'substr()'. Vedi anche il link sulla risposta di chaft ... – feeela

-1

I seguenti mbstring-variabili dovrebbe essere impostato tramite php.ini o vhost configurazione (httpd.conf; non funziona per directory [via .htaccess]):

mbstring.language = Neutral 
mbstring.internal_encoding = UTF-8 
mbstring.func_overload = 7 

Basta lasciare il codice come era, fare certo il tuo Editor/IDE salva solo i file come UTF-8 e distribuisce tutto come UTF-8 (via HTTP-header o META-tag).

Vedi anche: PHP Manual – Multibyte String – Function Overloading Feature