sql >> Database >  >> RDS >> Mysql

Witruimte in een databaseveld wordt niet verwijderd door trim()

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

De UTF-8-tekencodering voor een no-break-ruimte, Unicode (U+00A0), is de 2-byte reeks C2 A0 . Ik heb geprobeerd gebruik te maken van de tweede parameter voor trim() maar dat deed het niet. Voorbeeldgebruik:

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

Een MySQL-vervanging voor TRIM(text_field) die ook UTF-no-break-spaties verwijdert, dankzij de opmerking van @RudolfRein:

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

UTF-8-checklist:

(meer controles hier )

  1. Zorg ervoor dat uw PHP broncode-editor is in UTF-8-modus zonder stuklijst . Of stel de voorkeuren in .

  2. Zorg ervoor dat uw MySQL client is ingesteld voor UTF-8-tekencodering (meer hier en hier ), bijv.

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

  3. Zorg ervoor dat uw HTTP server is ingesteld voor UTF-8, b.v. voor Apache :

    AddDefaultCharset UTF-8

  4. Zorg ervoor dat de browser verwacht UTF-8.

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

    of

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



  1. MySQL kopieert meerdere rijwaarden met dezelfde ID naar nieuwe kolommen?

  2. Implementatie van Levenshtein-afstand voor mysql/fuzzy zoeken?

  3. Hernoem een ​​door de gebruiker gedefinieerd gegevenstype in SQL Server (T-SQL)

  4. MySQL:Kan tabellen geen naam geven in Upper Camel Case (Pascal Case)