gpt4 book ai didi

mysql - 删除无法识别的字符而不是存储问号

转载 作者:行者123 更新时间:2023-11-29 00:53:07 24 4
gpt4 key购买 nike

我有一个以 UTF-8 格式存储数据的数据库,但有时某些数据(在我的控制之外)添加了无法识别的字符,这些字符存储为问号 (?)。有什么方法可以配置 MySQL 来删除这些字符吗?

最佳答案

也许解决问题而不是解决问题会是更好的解决方案。如果你只是去掉问号,存储的数据不会像现在这么难看,但它仍然是错误的(错误=不完全是用户想要保存的数据)。

这个问题听起来好像您错过了在某处指定字符编码,因此使用了客户端的默认设置(您没有说到底是客户端 - 也许是用户浏览器?)似乎是 utf- 8 或大多数时候兼容的东西 - 但有时会有一个带有异国情调的默认字符集的 clint,这会让你遇到问题。

要解决这个问题,只需确保将字符编码设置为 utf-8 everywere:

  • 告诉 MySQL 使用 utf-8。为此,请将其添加到您的 my.cnf 中:

    collation_server = utf8_unicode_ci
    character_set_server = utf8
  • 在与 mysql 交互之前,发送这两个查询:

    SET NAMES 'utf8';
    CHARSET 'utf8';

    或者,或者,让 php 在打开连接后执行此操作:

    mysql_set_charset('utf8', $conn);
  • 将 UTF-8 设置为数据库的默认字符集

    CREATE DATABASE `my_db` DEFAULT CHARACTER SET 'utf8';
  • 对表格做同样的事情:

    CREATE TABLE `my_table` (
    -- ...
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  • 假设客户端是浏览器,将您的内容作为 utf-8 和正确的 header 提供:

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

    要真正确保浏览器理解,请添加元标记:

    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
  • 最后但同样重要的是,告诉浏览器使用 utf-8 提交表单

    <form accept-charset="utf-8" ...>

关于mysql - 删除无法识别的字符而不是存储问号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7431643/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com