gpt4 book ai didi

php - 转换数据库中的 MySQL 字符集(也与 Mysqli 字符集相关)

转载 作者:行者123 更新时间:2023-11-29 20:58:13 25 4
gpt4 key购买 nike

不幸的是,我的所有数据库(和排序规则)都是utf8_general_ci,我最近才知道最好使用utf8_unicode_ci,因为它可以准确地支持更多Unicode字符。

如果我使用 phpMyAdmin 通过菜单更改排序规则和数据库表字符集,会出现任何问题吗?

此外,由于我不知道字符集的重要性,因此我没有为 PHP 中的数据库连接设置 MySQLi 字符集。我应该对所有连接执行 mysqli->set_charset("utf8") 吗?当前默认设置为“latin1”。我认为这可能是一个问题,因为我存储为 UTF8 但接受 latin1? (不过,我在我的 html 页面上声明 UTF8:

 meta charset="utf-8" 

我还读到直接使用 utf8mb4 可能会更好?再说一次,我用 phpMyAdmin 更改它是否会遇到任何问题,值得吗?如果我选择 utf8mb4,我是否必须执行 mysqli->set_charset('utf8mb4')

谢谢!我真的应该从这开始。

谢谢!

最佳答案

CHARACTER SET是字节的编码COLLATION是比较字符的方式(对于 WHEREORDER BY )。

在表构建之后,您不能轻易更改其中任何一个。相反,您需要执行某种形式的 ALTER ,可能ALTER ... CONVERT TO ... .

字符集 utf8mb4具有处理所有中文(utf8 缺少一些字符)和表情符号(较新的笑脸)的优点。

排序规则 utf8_unicode_520_ci (或 utf8mb4_unicode_520_ci 对于字符集 utf8mb4)基于较新的 Unicode 标准,因此它可以说是 MySQL 中可用的“最佳”标准。

所以,是的,

  1. ALTER TABLE tbl CONVERT TO CHARACTER SET utf8mb4 COLLATION utf8mb4_unicode_520_ci;
  2. mysqli->set_charset('utf8mb4');连接后立即。
  3. 在 HTML 中,有 <meta charset=UTF-8>

有可能 CONVERT TO会遇到“重复键”,因为 _unicode_ 排序规则与 *_general_ci 的工作方式不同。这对于英语来说不会发生,对于欧洲大部分地区也不会发生。我想到了两个异常(exception):德国人 ß在一些UNIQUEPRIMARY列,以及由“非空格”重音符号与字母“组成”的任何重音字母。 (后者非常罕见。)

关于php - 转换数据库中的 MySQL 字符集(也与 Mysqli 字符集相关),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37448569/

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