【问题标题】:How do I alter column to support unicode如何更改列以支持 unicode
【发布时间】:2019-07-24 16:18:02
【问题描述】:

我创建了一个名为players的简单数据库表:

CREATE TABLE player (
    id              int(10)
                    NOT NULL
                    AUTO_INCREMENT
                    PRIMARY KEY,

    name            varchar(256)
                    NOT NULL
);

ALTER TABLE  players
    CHANGE name name
        varchar(256)
        CHARACTER SET utf8mb4
        COLLATE utf8mb4_unicode_ci;

我想将此条目插入数据库'????????????????????',所以我输入

INSERT INTO player (name) VALUES ("????????????????????")

但是,当插入时,名称值变为'???????????'

我该如何解决这个问题并尽可能保持我的数据库表的效率?

大多数名称都是普通的 ASCII 字符,但有时我有这些花哨的 unicode 字符。

【问题讨论】:

  • 这在this MySQL 5.7 db fiddle中按预期工作。
  • 也可能是您的客户端正确插入的值无法正确显示。
  • @GMB 显示不正确是什么意思?我在 phpmyadmin 上查看它
  • 你也是用 phpmyadmin 插入的吗?另外,请检查我链接的db fiddle,您可以看到数据已正确插入和查看。
  • @GMB 我看到了那个链接,是的,它插入正确。我正在使用 PHP 插入

标签: php mysql sql mysqli


【解决方案1】:

正如在 cmets 中所讨论的:您已正确更改您的表格,因此 name 列接受 utf8 字符。

this MySQL 5.7 DB Fiddle中,字符串'?????'被正确插入和显示。

您遇到的问题很可能来自您的客户端,它没有正确地将数据传递到 MySQL 服务器。

由于您使用的是带有 mysqli 扩展的 PHP,您可以使用 the mysqli::set_charset function 为连接设置默认客户端字符集:

$conn->set_charset("utf8mb4");

【讨论】:

  • 测试一下。
  • 谢谢。我只是将字符集更改为 utf8mb4 并且它有效
猜你喜欢
  • 1970-01-01
  • 2014-04-27
  • 1970-01-01
  • 2012-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-14
相关资源
最近更新 更多