Suppongo che tu stia utilizzando un diverso set di impostazioni mbstring ini. Ecco un modo per risolverlo. Per prima cosa nel cli puoi eseguire php -i |grep -i "mb"
per vederli.
Quindi creare un test phpunit che asserisca che i valori sono tutti uguali. Qui è la mia (ho fatto solo i probabili sospetti):
class MbStringTest extends PHPUnit_Framework_TestCase{
function test1(){
$this->assertEquals('UTF-8', ini_get('mbstring.internal_encoding'));
$this->assertEquals(0, ini_get('mbstring.encoding_translation'));
$this->assertEquals('', ini_get('mbstring.detect_order'));
$this->assertEquals(0, ini_get('mbstring.strict_detection'));
$s='ö';
$this->assertEquals($s,mb_convert_encoding(utf8_decode($s), 'UTF-8' , 'ISO-8859-1'));
}
}
parte: non ho potuto ottenere il codice per lavorare. Avevo bisogno di dirgli che la codifica sorgente è ISO-8859-1. Cioè il rilevamento automatico del set di caratteri di input ha sbagliato. Se stai solo cercando una soluzione rapida e non ti interessa il motivo, aggiungere quel 3 ° parametro esplicitamente a mb_convert_encoding
potrebbe essere tutto ciò che serve.
fonte
2013-01-22 09:53:41
E 'possibile che phpunit usi php.ini diversi, dove l'estensione php_mbstring non è abilitata? – jasir
@mins l'estensione 'mbstring' è caricata, come ho detto - mb_convert_encoding restituisce _qualcosa_ è solo sbagliato! –
Il tuo 'test.php' è codificato in UTF-8 senza BOM? –