sql >> Databáze >  >> RDS >> Mysql

Mezery v databázovém poli nejsou odstraněny trim()

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

Kódování znaků UTF-8 pro mezeru bez přerušení, Unicode (U+00A0), je 2bajtová sekvence C2 A0 . Pokusil jsem se použít druhý parametr k trim() ale to nepomohlo. Příklad použití:

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

Náhrada MySQL za TRIM(text_field) který také odstraňuje mezery bez přerušení UTF díky komentáři @RudolfRein:

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

Kontrolní seznam UTF-8:

(další kontroly zde )

  1. Ujistěte se, že máte PHP je zde editor zdrojového kódu Režim UTF-8 bez kusovníku . Nebo nastavte v předvolbách .

  2. Ujistěte se, že máte MySQL klient je nastaven na kódování znaků UTF-8 (více zde a zde ), např.

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

  3. Zkontrolujte, zda máte HTTP server je nastaven na UTF-8, např. pro Apache :

    AddDefaultCharset UTF-8

  4. Ujistěte se, že prohlížeč očekává UTF-8.

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

    nebo

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



  1. Nelze použít připojení MySQL pro rámec entity 6

  2. Sloupec AJAX Post Fatal Error nemůže být nulový

  3. Strategie hromadné aktualizace SQLAlchemy

  4. Indexování každého sloupce v tabulce