gpt4 book ai didi

mysql - 我可以将用户输入语言转换为数据库的默认排序规则吗?

转载 作者:行者123 更新时间:2023-11-29 16:19:54 27 4
gpt4 key购买 nike

我想在我的数据库中搜索用户输入。数据库排序规则为latin1_swedish_ci 。我不想改变它,我可以改变用户输入 utf-8latin1_swedish_ci

编辑:
我采用两种方法。
方法1:我导入并使用默认排序规则latin1_swedish_ci和字符集latin1 。然后我就有了
image

在这里我可以查询像 SELECT * FROM dict WHERE english_word = '$_value'我根据需要在浏览器中获取了包括 malayalam_definition 在内的列的所有值。但问题是我无法像 SELECT * FROM dict WHERE malayalam_definition = '$_value' 那样查询。它不返回任何结果。

方法2:我将排序规则更改为utf8_unicode_ci并将字符设置为 utf8 。然后在 mysql 中我得到所需的值,例如
image
在这里,当我查询 SELECT * FROM dict WHERE english_word = '$_value'在浏览器中 我在 malayalam_definition 中得到问号值如
image

SHOW VARIABLES LIKE 'character\_set\_%';的结果

+--------------------------+--------+
| Variable_name | Value |
+--------------------------+--------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
+--------------------------+--------+
7 rows in set (0.00 sec)

我需要改变character_set_server那怎么办呢?

最佳答案

首先,“数据库排序规则”只是默认值。真正的问题是您感兴趣的字符集是什么。

那么,您的客户端中有多少字节?它们是否编码为 latin1?还是utf8?无论哪种情况,请告诉 MySQL 这就是即将发生的情况。这优选地在连接参数中完成。 (您的客户端语言是什么?)或者,根据客户端编码使用 SET NAMES latin1SET NAMES utf8

现在,MySQL 将在 INSERTSELECT 上执行什么操作...它会将编码从客户端编码转换为列编码就像您执行INSERT一样。无需采取进一步行动即可实现这一目标。

类似地,MySQL 将在 SELECT 期间以另一种方式进行转换。

(当然,如果列和客户端使用相同的编码,则不需要“转换”。)

您的问题提到了“整理”。到目前为止,我只讨论了字符集,也称为“编码”。与此相反,两个字符串的排序和比较——这就是COLLATION

对于 CHARACTER SET latin1,默认 COLLATIONlatin1_swedish_ci
对于 CHARACTER SET utf8,默认 COLLATIONutf8_general_ci
有几种不同的“排序规则”来处理德语或土耳其语或西类牙语或(等)排序的怪癖。

请解释为什么您要尝试执行您所说的操作。有很多方法都可能导致错误,所以我不想给你一个ALTER语句——它可能只会让事情变得更糟真实 目标。

最好使用 utf8mb4 而不是 utf8。外界指的是UTF-8;这相当于 MySQL 的 utf8mb4

编辑(OP编辑后)

第一个屏幕截图显示“Mojibake”。另一张截图显示了问号。 Trouble with UTF-8 characters; what I see is not what I stored 中介绍了每个问题的原因。

关于mysql - 我可以将用户输入语言转换为数据库的默认排序规则吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54576365/

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