如何让MySQL正确处理UTF-8

2024-02-28

的回应之一我昨天问的一个问题 https://stackoverflow.com/questions/198721/converting-a-word-document-into-usable-html-in-php建议我确保我的数据库可以正确处理 UTF-8 字符。我怎样才能用 MySQL 做到这一点?


Update:

简短的回答 - 你几乎应该总是使用utf8mb4字符集和utf8mb4_unicode_ci整理。

更改数据库:

ALTER DATABASE dbname CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

See:

  • 亚伦对此答案的评论如何让MySQL正确处理UTF-8 https://stackoverflow.com/questions/202205/how-to-make-mysql-handle-utf-8-properly#comment28222734_202246

  • utf8_general_ci 和 utf8_unicode_ci 有什么区别 https://stackoverflow.com/questions/766809/whats-the-difference-between-utf8-general-ci-and-utf8-unicode-ci

  • 转换指南:https://dev.mysql.com/doc/refman/5.5/en/charset-unicode-conversion.html https://dev.mysql.com/doc/refman/5.5/en/charset-unicode-conversion.html

原答案:

MySQL 4.1及以上版本的默认字符集为UTF-8。您可以在您的my.cnf文件,记得设置both客户端和服务器(default-character-set and character-set-server).

如果您希望将现有数据转换为 UTF-8,请转储数据库,然后将其作为 UTF-8 导入回来,确保:

  • use SET NAMES utf8在查询/插入数据库之前
  • use DEFAULT CHARSET=utf8创建新表时
  • 此时,您的 MySQL 客户端和服务器应该采用 UTF-8(请参阅my.cnf)。请记住,您使用的任何语言(例如 PHP)也必须是 UTF-8。某些版本的 PHP 将使用自己的 MySQL 客户端库,该库可能不支持 UTF-8。

如果您确实想迁移现有数据,请记住先备份!当事情没有按计划进行时,可能会发生许多奇怪的数据砍伐!

一些资源:

  • 完成 UTF-8 迁移 http://www.oreillynet.com/onlamp/blog/2006/01/turning_mysql_data_in_latin1_t.html(cdbaby.com)
  • 文章关于PHP 函数的 UTF-8 准备情况 http://www.phpwact.org/php/i18n/utf-8(请注意,其中一些信息已过时)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何让MySQL正确处理UTF-8 的相关文章

  • 连接多个表的查询执行速度慢

    我有以下表格 Parts id int idx partnumber varchar idx accountnumber idx enabled Sample data RefUserGroup id int idx value varch
  • MYSQL 从表中选择,获取表中最新/最后 10 行

    最好 最简单的方法是什么 我目前的查询是 SELECT FROM chat WHERE userID session AND toID friendID OR userID friendID AND toID session ORDER B
  • MySQL - CONCAT - 有什么方法可以连接字符串并将其用作变量吗?

    mysql 上的时间很少 但开始探索边缘 Stackoverflow 是一个很棒的资源 谢谢大家 在尝试 Concat 时我遇到了这个问题 我知道会有办法 但我就是想不出来 我的例子 set strokes hole 10 6 set x
  • Oracle中如何检测4字节UTF8字符

    我们已经看到oracle中存储了4字节的UTF 8字符 我们需要检测特定列中有多少行包含此类字符 尝试了这里给出的建议 UTF 16 补充字符 https stackoverflow com questions 34720830 how t
  • Django 管理员 - 登录

    我正在建造一个Django Web App 与 Django Suit 用于管理界面 已经让 Python 2 7 Django 1 10 和 MySQL 和谐通信并启动了一个项目 python m django admin startpr
  • HTAccess - 令人困惑的干净网址

    如果我想简单地重定向 clients page to clients php view page我会使用像这样简单的东西 它效果很好 Options FollowSymlinks RewriteEngine on RewriteRule c
  • Mysql - Mysql2::错误:字符串值不正确:

    所以我建造了一个刮刀并拉动一些物体 问题是有些是外语 它使 mysql 数据库有点崩溃 这是我得到的错误 知道我能用这个做什么吗 谢谢 Mysql2 错误 列的字符串值不正确 xC5 x8Dga 第 1 行的 描述 插入sammiches
  • 如何用 UNION 运算符替换 OR 运算符?

    这是我的查询 SELECT h id h subject h body matnF h amount h keywords tags h closed h author id author h AcceptedAnswer h type h
  • SQL 检查一组日期是否在指定的日期范围内

    我有一个表 其中保存架构中房间不可用的日期 ROOM ID DATE UNAVAILABLE 我需要一个 sql 查询来检查两个日期范围内是否有可用房间 类似于 Select All rooms that are constantly av
  • MYSQL 查询返回“资源 id#12”而不是它应返回的数值

    不知道为什么 但这返回了错误的值 我正在取回此资源 ID 12 而不是我正在寻找的数值 1 执行此操作的代码是 type SELECT account type from user attribs WHERE username userna
  • 使用唯一索引删除重复项

    我在两个表字段 A B C D 之间插入 相信我已经在 A B C D 上创建了唯一索引以防止重复 然而我以某种方式简单地对这些做了一个正常的索引 因此插入了重复项 这是2000万条记录的表 如果我将现有索引从普通索引更改为唯一索引 或者只
  • mysql语句中的*星号是什么意思?

    Ex mysql query SELECT FROM members WHERE id id 这意味着选择表中的所有列
  • 将 UPDATE 转换为 INSERT INTO ON DUPLICATE KEY UPDATE 语句

    我有这个 UPDATE MySQL 语句 效果很好 UPDATE table1 Inner Join table2 ON table2 id table1 gw id SET table1 field1 1 table1 field2 2
  • PHP PDO相关:更新SQL语句未更新数据库内容

    我正在尝试使用准备好的语句来实现更新语句PHP http en wikipedia org wiki PHP脚本 但它似乎没有更新数据库中的记录 我不确定为什么 所以如果您能分享一些见解 我将不胜感激 Code query UPDATE D
  • 如何将 MySQL 数据库更改为 UTC?

    我使用的是 Windows 7 对数据库方面的东西有点陌生 我尝试在 Google 上搜索如何将系统时区更改为 UTC 但文档有些高级 我不太确定如何更改此字段 在 my ini 文件的 mysqld 部分下 添加以下行 default t
  • 单行的总和值?

    我有一个 MySQL 查询 它返回由一系列 1 和 0 组成的单行 它用于进度条指示器 我现在在代码中对它进行求和 但我尝试对查询中的值求和 并意识到我无法使用 SUM 因为它们有很多列 但只有一行 有没有办法可以在查询中自动求和 就像这样
  • 如何以最少的查询次数获取帖子列表和关联标签

    我的表格结构如下 标签 更多的是一个类别 id 标签名称 描述 slug POSTS ID 标题 网址 邮戳 id idPost idTag USERS ID 用户名 userSlug VOTES id idPost idUser 每个帖子
  • 对于数据库来说,选择正确的数据类型会影响性能吗?

    如果是这样 为什么 我的意思是 tinyint 的搜索速度比 int 快吗 如果是这样 性能上的实际差异是什么 是的 根据数据类型 它确实有所不同 int vs tinyint不会在速度上产生明显的差异 但会在数据大小上产生差异 假设tin
  • 显示表 FULLTEXT 索引列

    我希望运行一个查询 该查询将返回表中全文索引的列列表 该表采用 MyISAM 格式 我将使用 php 来构建查询 理想情况下 我会运行查询 它会返回信息 以便我可以构造一个以逗号分隔的列字符串 例如 名 姓 电子邮箱 这在 MySQL 中可
  • 查询中列的顺序重要吗?

    当从 MySQL 表中选择列时 与表中的顺序相比 选择列的顺序是否会影响性能 不考虑可能覆盖列的索引 例如 您有一个包含行 uid name bday 的表 并且有以下查询 SELECT uid name bday FROM table M

随机推荐