【问题标题】:Let MySQL client command line accept characters with accents as input让 MySQL 客户端命令行接受带有重音符号的字符作为输入
【发布时间】:2019-03-01 09:49:36
【问题描述】:

我不知道如何让我的 MySQL 客户端接受带有重音符号的字母作为 Ubuntu 命令行上的输入。这些字符不会在控制台上回显,也不会被接受为输入。据我记得,在以前版本的 mysql 中,我通过使用命令mysql --default-character-set=utf8 启动客户端解决了这个问题,但这不适用于 mysql Ver 14.14 Distrib 5.7.25,用于使用 EditLine 的 Linux (x86_64) Ubuntu 18.04 上的包装器

起作用的是echo 'SELECT "é" AS letter' | mysql <dbname>,它给出了正确的输出。

我怀疑 EditLine 包装器犯了这种行为,但我不知道如何摆脱这个不需要的功能。

【问题讨论】:

  • 请提供SHOW VARIABLES LIKE 'char%';my.cnf的内容。
  • 请提供一个问题示例——您输入的内容和显示的内容。
  • 当我在mysql的命令行界面输入“abcdé”时,只显示字母“abcd”并发送到MySQL客户端。
  • 您可以使用mariadb-client。它支持 utf-8 字符。替换 mysql-client。
  • @HimanshuMishra:谢谢,我会试试这个。可以使用maria-db客户端连接mysql服务器吗?

标签: mysql editline


【解决方案1】:

如果你使用Terminal

Terminal > Preferences > Encodings > UTF-8 Unicode

【讨论】:

  • 这不是答案,因为我可以在终端的 shell 中输入“é”。只有在 mysql 内部,带重音的字母才不会出现。
  • 让我们看看 SELECT col, HEX(col) ... 是否有一些混乱的行和列。
  • 列(在服务器端的数据库内)没有弄乱。带有重音符号的字符永远不会到达服务器。在提示符下键入时,mysql 客户端的命令行会忽略这些。
  • @PierreFrançois - 好的。这进一步暗示了终端程序。
【解决方案2】:

你可以让你的数据库支持 UTF-8 编码

尝试以下操作:ALTER DATABASE your_database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

【讨论】:

  • 据我了解,您推荐的命令会影响数据库和服务器,但不会影响 MySQL 客户端。我在客户端没有任何更改就发布了它。
【解决方案3】:

我今天发现我在当前的 bash 中继承了以前安装设置的别名:

alias mysql='mysql --default-character-set=utf8'

自从我删除了那个别名(unalias mysql)后,这种不当行为就消失了。

【讨论】:

    猜你喜欢
    • 2021-07-22
    • 1970-01-01
    • 1970-01-01
    • 2018-06-24
    • 2019-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-30
    相关资源
    最近更新 更多