Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Whitespace in einem Datenbankfeld wird von trim() nicht entfernt

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

Die UTF-8-Zeichenkodierung für ein geschütztes Leerzeichen, Unicode (U+00A0), ist 2-Byte-Folge C2 A0 . Ich habe versucht, den zweiten Parameter für trim() aber das hat nicht gereicht. Verwendungsbeispiel:

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

Ein MySQL-Ersatz für TRIM(text_field) das entfernt auch UTF-No-Break-Leerzeichen, dank des Kommentars von @RudolfRein:

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

UTF-8-Checkliste:

(weitere Prüfungen hier ). )

  1. Stellen Sie sicher, dass Ihr PHP Quellcode-Editor ist drin UTF-8-Modus ohne BOM . Oder in den Einstellungen festlegen .

  2. Stellen Sie sicher, dass Ihr MySQL Client auf UTF-8-Zeichenkodierung eingestellt ist (mehr hier ). und hier ), z. B.

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

  3. Stellen Sie sicher, dass Ihr HTTP Server ist auf UTF-8 eingestellt, z.B. für Apache :

    AddDefaultCharset UTF-8

  4. Stellen Sie sicher, dass der Browser erwartet UTF-8.

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

    oder