Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Espaço em branco em um campo de banco de dados não é removido por trim()

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

A codificação de caracteres UTF-8 para um espaço sem quebra, Unicode (U+00A0), é o sequência de 2 bytes C2 A0 . Tentei usar o segundo parâmetro para trim() mas isso não resolveu. Exemplo de uso:
assert("abc" === UberTrim("  \r\n  \xc2\xa0  abc  \t \xc2\xa0   "));

Um substituto do MySQL para TRIM(text_field) que também remove espaços no-break UTF, graças ao comentário de @RudolfRein:
TRIM(REPLACE(text_field, '\xc2\xa0', ' '))

Lista de verificação UTF-8:


(mais cheques aqui )

  1. Certifique-se de que seu PHP editor de código-fonte está em Modo UTF-8 sem BOM . Ou defina nas preferências .

  2. Certifique-se de que seu MySQL cliente está configurado para codificação de caracteres UTF-8 (mais aqui e aqui ), por exemplo.

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

  3. Certifique-se de que seu HTTP server está definido para UTF-8, por exemplo para Apache :

    AddDefaultCharset UTF-8

  4. Verifique se o navegador espera UTF-8.

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

    ou

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