2012-02-24 22 views
6

Se dovessi scrivere un nuovo file php e includere echo "current mb_internal_encoding: ".mb_internal_encoding(), da dove proviene il valore di uscita? Come è "deciso"/come è governato?Da dove viene il valore predefinito mb_internal_encoding()?

Background: ho scritto una web app in cui pensavo di aver fatto di tutto per impostare l'intero sito in UTF-8 e ha scoperto che ho ancora bisogno di impostare questo valore manualmente ...

risposta

6

Dipende dalla impostazione di mbstring.internal_encoding in php.ini.

+1

Interessante. Ho '; mbstring.internal_encoding = EUC-JP' quindi non è attivo. Inoltre trovo '; mbstring.language = Giapponese','; mbstring.http_output = SJIS'. Sto sviluppando utilizzando lo stack WAMPserver, non ho idea del motivo per cui tutti quelli sono impostati su set di caratteri Jpz. Qualche ragione per cui non dovrei passare attraverso l'intero php.ini e sostituire qualsiasi menzione di qualche charset con "utf-8"? – JDelage

+0

Se non lo imposto manualmente, 'mb_internal_encoding()' esce come ISO-8859-1 ... – JDelage

+1

Jup, per qualche ragione a PHP piace ISO-8859 come predefinito. È necessario gestire queste impostazioni nell'applicazione per mantenerle portatili. Cambiare il php.ini ovunque tu voglia distribuire la tua app spesso non è la soluzione più conveniente. – deceze

Problemi correlati