mysql 中的特殊名称使用什么编码

What encoding to use for the special name in mysql

我有这个名字:éššede+á 我有 mysql 但我需要为此搜索出色的编码(ASCII,latin1)?

因为我从 php 中搜索此 ID 的位置但无法正常工作,问题是字符:(éšš+á) 来自 id:éššede+á

谢谢

你应该切换到 uft8mb4

但是具有正确排序规则的 latin1 也可以解决问题

基本上,您还需要具有与 table

相同设置的正确连接字符串
CREATE TABLE name(name1 varchar(10))
CREATE TABLE name_1(name1 varchar(10)) CHARACTER SET latin1 COLLATE latin1_danish_ci;
SHOW CREATE TABLE name
Table | Create Table                                                                                                                     
:---- | :--------------------------------------------------------------------------------------------------------------------------------
name  | CREATE TABLE `name` (<br>  `name1` varchar(10) DEFAULT NULL<br>) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
INSERT INTO name VALUES ('éššede+á')
SELECT * FROM name WHERE name1 LIKE 'éššede+á'
| name1        |
| :----------- |
| éššede+á |
INSERT INTO name_1 VALUES ('éššede+á')
SELECT * FROM name_1 WHERE name1 LIKE 'éššede+á'
| name1        |
| :----------- |
| éššede+á |

db<>fiddle here

很多 CHARACTER SETs 可以处理这些字符:

                         CHARACTER SET        Hex
                    binary, utf8mb4, utf8  C3A9C5A1C5A1C3A1
                           cp1250, latin1  E99A9AE1
                                    cp852  82E7E7A0
                            eucjpms, ujis  8FABB18FABDE8FABDE8FABA1
                                  gb18030  A8A68130943881309438A8A2
                                      hp8  C5ECECC4
                                  keybcs2  82A8A8A0
                                   latin2  E9B9B9E1
                                    macce  8EE4E487

latin7 几乎可以工作,但不适用于 á

uft8mb4强烈推荐;它处理“一切”。