You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么本地WAMP环境下MySQL存储UTF-8字符会显示问号?

问题根因

这个问题是本地WAMP环境的MySQL连接/客户端字符集配置和表使用的utf8mb4不匹配导致的,插入时的Unicode右单引号’在转码过程中丢失,被替换为问号。生产环境因为字符集配置完整所以没有问题。

排查&修复步骤
  • 第一步:先执行命令查看当前本地环境的字符集配置
show variables like '%char%';

正常支持utf8mb4的配置应该满足:

character_set_client = utf8mb4
character_set_connection = utf8mb4
character_set_results = utf8mb4
character_set_database = utf8mb4

  • 第二步:临时测试修复,每次连接数据库后先执行一次设置字符集的命令,再执行插入操作验证
SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci;

执行后重新插入测试数据,查询如果显示正常就说明是字符集配置问题。

  • 第三步:永久修改WAMP的MySQL配置,避免每次连接都手动设置
    1. 打开WAMP的MySQL配置文件my.ini(可以通过WAMP托盘菜单直接找到MySQL的配置文件入口)
    2. 在[mysqld]节点下添加/修改如下配置:
      character-set-server = utf8mb4
      collation-server = utf8mb4_unicode_ci
      
    3. 在[client]节点下添加/修改如下配置:
      default-character-set = utf8mb4
      
    4. 保存配置后重启WAMP的MySQL服务即可生效。
额外注意事项

如果是用PHP代码插入数据,也需要在建立数据库连接后指定字符集,比如用PDO的话可以在DSN里指定charset=utf8mb4,用mysqli的话调用mysqli_set_charset($conn, 'utf8mb4'),避免PHP层面的转码问题。

内容的提问来源于stack exchange,提问作者saurabh yadav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 13:24:03