Domanda

sto affettando stringa unicode con segni diacritici che utilizzano la funzione mb_substr ma funziona come userei semplice funzione substr. Si divide i caratteri Unicode a metà la visualizzazione di domanda netta di diamante.

per es.

echo mb_substr('ááááá', 0, 5); //Displays áá�

Che cosa potrebbe essere sbagliato?

È stato utile?

Soluzione

Ho lo stesso problema se non specificare la codifica come ultimo parametro a mb_substr : il valore predefinito , almeno sul mio server, per ISO-8859-1.


Ma, se ho impostato correttamente la codifica, per UTF-8, funziona OK:

echo mb_substr('ááááá', 0, 5, 'UTF-8');

Ottiene il display di destra nel browser:

ááááá


Vedere mb_substr (citando, sottolineatura mia) :

string mb_substr  ( string $str  , int $start  [, 
    int $length  [, string $encoding  ]] )
  

Il parametro è encoding   la codifica dei caratteri. Se si tratta   omesso, carattere interno   verrà utilizzato valore di codifica .

Altri suggerimenti

Ho avuto lo stesso problema e le risposte di cui sopra mi ha aiutato troppo. Accanto impostazione php.ini o utilizzando ini_set() , può anche aiutare a usare mb_internal_encoding('utf-8'); ( utf-8 può essere sostituito a scelta) per impostare la codifica permanente per le funzioni più byte.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top