sql >> Base de Datos >  >> RDS >> Mysql

El recorte () no elimina los espacios en blanco en un campo de base de datos

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

La codificación de caracteres UTF-8 para un espacio sin interrupciones, Unicode (U+00A0), es secuencia de 2 bytes C2 A0 . Traté de hacer uso del segundo parámetro para trim() pero eso no funcionó. Ejemplo de uso:

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

Un reemplazo de MySQL para TRIM(text_field) eso también elimina los espacios sin interrupción de UTF, gracias al comentario de @RudolfRein:

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

Lista de verificación de UTF-8:

(más controles aquí )

  1. Asegúrese de que su PHP editor de código fuente está en Modo UTF-8 sin lista de materiales . O establecer en las preferencias .

  2. Asegúrese de que su MySQL el cliente está configurado para la codificación de caracteres UTF-8 (más aquí y aquí ), por ejemplo

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

  3. Asegúrese de que su HTTP el servidor está configurado para UTF-8, p. para Apache :

    AddDefaultCharset UTF-8

  4. Asegúrese de que el navegador espera UTF-8.

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

    o

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