2012-11-22 16 views

risposta

10

Ci sono diverse cose che dovete considerare:

  1. Verificare che i dati nel DB viene immagazzinato come UTF-8
  2. Verificare che la connessione client al DB è in UTF-8 (per esempio, in mysql vedi: http://www.php.net/manual/en/mysqli.character-set-name.php)
  3. Assicurati che la pagina contenga il tipo di contenuto impostato come UTF-8 [puoi usare l'intestazione ('Content-Type: utf-8'); ]
  4. Provare ad impostare la codifica interna, usando mb_internal_encoding ("UTF-8");

hth

+0

+1 per aver menzionato la codifica del DB e' mb_internal_encoding' –

+0

... e come menzionato nelle altre due risposte dovresti usare 'mb_substr' –

+0

mb_internal_encoding ("UTF-8"); - Funziona bene! grazie! –

21
$first_char = mb_substr($title, 0, 1); 

è necessario utilizzare le funzioni di stringa multibyte di PHP per gestire correttamente le stringhe Unicode:

http://www.php.net/manual/en/ref.mbstring.php

http://www.php.net/manual/en/function.mb-substr.php

È inoltre necessario specificare la codifica dei caratteri nella <head> della vostra HTML:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 

o:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-16" /> 
+2

echo mb_substr ($ titolo, 0, 1); Risultato: –

+0

mb_substr non aiuta –

+0

Puoi pubblicare la stringa completa qui? –

4

stringhe PHP non capisce le stringhe multibyte per impostazione predefinita, l'array come indicizzazione taglierà del primo byte e se capita di non essere nel range ascii si ottiene questo risultato.

Utilizzare il metodo mb_substr.

8

Come già detto in altre questioni, con PHP, quando si cerca di ottenere una stringa, non capisce i caratteri multibyte (come si ottiene con UTF8 per esempio).

Quali le altre risposte non menzionano è che si dovrebbe suggerire la codifica che si desidera utilizzare per il mb_substr

Così, per esempio, io uso questo:

mb_substr("Sunday", 0, 1,'UTF8'); // Returns S 
mb_substr("воскресенье", 0, 1,'UTF8'); // Returns в 
+0

Non ha funzionato per me senza il parametro 'UTF8'. Grazie! – PiTheNumber

Problemi correlati