Mysql
 sql >> Database >  >> RDS >> Mysql

Gli spazi bianchi in un campo del database non vengono rimossi da trim()

function UberTrim($s) {
    $s = preg_replace('/\xA0/u', ' ', $s);  // strips UTF-8 NBSP: "\xC2\xA0"
    $s = trim($s);
    return $s;
}

La codifica dei caratteri UTF-8 per uno spazio senza interruzioni, Unicode (U+00A0), è Sequenza a 2 byte C2 A0 . Ho provato a utilizzare il secondo parametro per trim() ma non ha funzionato. Esempio di utilizzo:

assert("abc" === UberTrim("  \r\n  \xc2\xa0  abc  \t \xc2\xa0   "));

Un sostituto MySQL per TRIM(text_field) che rimuove anche gli spazi senza interruzioni UTF, grazie al commento di @RudolfRein:

TRIM(REPLACE(text_field, '\xc2\xa0', ' '))

Elenco di controllo UTF-8:

(altri controlli qui )

  1. Assicurati che il tuo PHP l'editor del codice sorgente è in Modalità UTF-8 senza BOM . Oppure impostalo nelle preferenze .

  2. Assicurati che il tuo MySQL il client è impostato per la codifica dei caratteri UTF-8 (maggiori informazioni qui e qui ), ad esempio

    $pdo = new PDO('mysql:host=...;dbname=...;charset=utf8',$userid,$password); $pdo->exec("SET CHARACTER SET utf8");

  3. Assicurati che il tuo HTTP il server è impostato per UTF-8, ad es. per Apache :

    AddDefaultCharset UTF-8

  4. Assicurati che il browser si aspetta UTF-8.

    header('Content-Type: text/html; charset=utf-8');

    o

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