sql >> Databasteknik >  >> RDS >> Mysql

Mellanslag i ett databasfält tas inte bort av trim()

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

UTF-8-teckenkodningen för ett no-break-mellanslag, Unicode (U+00A0), är 2-byte sekvens C2 A0 . Jag försökte använda den andra parametern för att trim() men det gjorde inte susen. Exempel på användning:

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

En MySQL-ersättning för TRIM(text_field) som också tar bort UTF no-break blanksteg, tack vare @RudolfReins kommentar:

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

UTF-8 checklista:

(fler kontroller här )

  1. Se till att din PHP källkodsredigeraren är i UTF-8-läge utan BOM . Eller ställ in inställningarna .

  2. Se till att din MySQL klienten är inställd för UTF-8 teckenkodning (mer här och här ), t.ex.

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

  3. Se till att din HTTP servern är inställd på UTF-8, t.ex. för Apache :

    AddDefaultCharset UTF-8

  4. Kontrollera webbläsaren förväntar sig UTF-8.

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

    eller

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



  1. Hur får man en lista över databaser?

  2. Hur man förhindrar rastillstånd i online hotellbokning

  3. Beställ genom att använda polska bokstäver

  4. Använda Sysbench för att generera testdata för delad tabell i MySQL