Mysql
 sql >> Base de données >  >> RDS >> Mysql

Les espaces blancs dans un champ de base de données ne sont pas supprimés par trim()

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

Le codage de caractères UTF-8 pour un espace insécable, Unicode (U+00A0), est le Séquence de 2 octets C2 A0 . J'ai essayé d'utiliser le deuxième paramètre de trim() mais ça n'a pas marché. Exemple d'utilisation :

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

Un remplacement MySQL pour TRIM(text_field) qui supprime également les espaces insécables UTF, grâce au commentaire de @RudolfRein :

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

Liste de contrôle UTF-8 :

(plus de vérifications ici )

  1. Assurez-vous que votre PHP l'éditeur de code source est dans Mode UTF-8 sans nomenclature . Ou définir dans les préférences .

  2. Assurez-vous que votre MySQL le client est configuré pour le codage de caractères UTF-8 (plus ici et ici ), par exemple

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

  3. Assurez-vous que votre HTTP serveur est défini pour UTF-8, par ex. pour Apache :

    AddDefaultCharset UTF-8

  4. Assurez-vous que le navigateur attend UTF-8.

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

    ou

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