mb_internal_encoding('UTF-8')
non fa nulla da solo, imposta solo il parametro di codifica predefinito per ognimb_
funzione. Se non stai utilizzando alcunmb_
funzione, non fa alcuna differenza. Se lo sei, ha senso impostarlo in modo da non dover passare il$encoding
parametro ogni volta individualmente.- IMO
mb_detect_encoding
è per lo più inutile poiché è fondamentalmente impossibile rilevare con precisione la codifica di testo sconosciuto. Dovresti sapere in quale codifica si trova un blob di testo perché hai una specifica al riguardo, oppure devi analizzare i metadati appropriati come le intestazioni o i meta tag in cui è specificata la codifica. - Utilizzo di
mb_check_encoding
per verificare se un blob di testo è valido nella codifica in cui ti aspetti che si trovi è in genere sufficiente. In caso contrario, scartalo e genera un errore appropriato. -
Riguardo a:
Se stai manipolando stringhe che contengono caratteri multibyte, allora sì, devi usare il
mb_
funzioni per evitare di ottenere risultati errati. Le funzioni di base delle stringhe funzionano solo a livello di byte, non a livello di carattere, che è ciò che in genere si desidera quando si lavora con le stringhe. utf8_general_ci
rispetto autf8_bin
fa la differenza solo quando fascicola , ovvero l'ordinamento e il confronto delle stringhe. Conutf8_bin
i dati vengono trattati in forma binaria, ovvero solo i dati identici sono identici. Conutf8_general_ci
viene applicata una certa logica, ad es. "é" ordina insieme a "e" e le maiuscole sono considerate uguali alle minuscole.