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

Mellemrum i et databasefelt fjernes ikke af trim()

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

UTF-8 tegnkodningen for et no-break space, Unicode (U+00A0), er 2-byte-sekvens C2 A0 . Jeg forsøgte at gøre brug af anden parameter til trim() men det gjorde ikke tricket. Eksempel på brug:

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

En MySQL-erstatning for TRIM(text_field) der også fjerner UTF no-break mellemrum, takket være @RudolfReins kommentar:

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

UTF-8-tjekliste:

(flere tjek her )

  1. Sørg for at din PHP kildekodeeditor er i UTF-8-tilstand uden stykliste . Eller indstil i præferencer .

  2. Sørg for, at din MySQL klienten er indstillet til UTF-8 tegnkodning (mere her og her ), f.eks.

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

  3. Sørg for at din HTTP server er indstillet til UTF-8, f.eks. til Apache :

    AddDefaultCharset UTF-8

  4. Sørg for at browseren forventer UTF-8.

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

    eller

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



  1. Filtrering af data til visning fra databasen i javafx

  2. Sådan tilføjes AM/PM til en tidsværdi i SQL Server (T-SQL)

  3. Online/Offline Database Synkronisering - MySQL/PHP

  4. MySQL hente array tilføjer duplikerede værdier?