Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql将排序规则从latin1_swedish_ci更改为utf8mb4_bin_Mysql_Collation_Utf8mb4 - Fatal编程技术网

Mysql将排序规则从latin1_swedish_ci更改为utf8mb4_bin

Mysql将排序规则从latin1_swedish_ci更改为utf8mb4_bin,mysql,collation,utf8mb4,Mysql,Collation,Utf8mb4,我的一篇专栏文章中有一些特殊字符,比如ψ,拉丁语和瑞典语似乎不支持。为了处理这种情况,我尝试将一列的排序规则切换为utf8mb4_-bin。但在转换我得到的数据时: Query error: #1366 - Incorrect string value: '\xE4' for column 'title' at row 18 注意:我正在使用phpmyadmin来更改它。为什么我会犯这个错误?我以为utf8mb4_-bin可以支持它?你将面临一条崎岖的道路。六角E4与Psi无关。它是从哪里来的

我的一篇专栏文章中有一些特殊字符,比如ψ,拉丁语和瑞典语似乎不支持。为了处理这种情况,我尝试将一列的排序规则切换为utf8mb4_-bin。但在转换我得到的数据时:

Query error:
#1366 - Incorrect string value: '\xE4' for column 'title' at row 18

注意:我正在使用phpmyadmin来更改它。为什么我会犯这个错误?我以为utf8mb4_-bin可以支持它?

你将面临一条崎岖的道路。六角E4与Psi无关。它是从哪里来的

请选择标题,标题。。。在某些包含非Ascii字符的标题上

psi的UTF-8编码是两个十六进制字符CEA8

E4,当解释为拉丁文时,1代表ä。这有什么意义吗

该列需要更改为字符集utf8或utf8mb4。但有一种正确的方法可以做到这一点,而且这种方法会把事情搞得更糟。在讨论哪一个是对的之前,让我们先看看这个十六进制。 控制客户端使用何种编码的变量。切换编码时需要更改多个设置。 更多参考资料:

没有将E4映射到Psi的字符集:

cp1250, cp1257, dec8, latin1, latin2, latin5, latin7  25 24
                                                     'Kaze no Tani no Nausicaä'
                                        cp852  25 24 'Kaze no Tani no Nausicań'
                                        cp850  25 24 'Kaze no Tani no Nausicaõ'
                                        macce  25 24 'Kaze no Tani no Nausicaš'
                                          hp8  25 24 'Kaze no Tani no Nausicað'
                                        greek  25 24 'Kaze no Tani no Nausicaδ'
                                      keybcs2  25 24 'Kaze no Tani no NausicaΣ'
                                       cp1251  25 24 'Kaze no Tani no Nausicaд'
                                 koi8r, koi8u  25 24 'Kaze no Tani no NausicaД'
                                        cp866  25 24 'Kaze no Tani no Nausicaф'
                                     armscii8  25 24 'Kaze no Tani no NausicaՊ'
                                       hebrew  25 24 'Kaze no Tani no Nausicaה'
                                       cp1256  25 24 'Kaze no Tani no Nausicaن'
                                       tis620  26 24 'Kaze no Tani no Nausicaไ'
                                      geostd8  26 24 'Kaze no Tani no Nausicaჰ'
                                     macroman  26 24 'Kaze no Tani no Nausica‰'
因此,我担心已经犯了两个错误。你有没有另一个破损文本的例子

拉丁字母1不能处理希腊字母。也不是西里尔语。也不是中国人。等等,那么,ä是正确的?我一直在研究如何在E4和Psi之间切换

因此,您可能应该转换为utf8mb4

ALTER TABLE t CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci;
将转换表t中的所有文本列

要仅更改一列,请执行以下操作:

ALTER TABLE t MODIFY COLUMN c VARCHAR(...)
     CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci;

它必须包含您没有的所有其他内容,例如,NULL或NOTNULL。

。转换时-您可以停止转换吗?执行了什么SQL?有几种可能的方法——大多数都会引起麻烦。您可能需要执行正确的SQL,而不是依赖UI来正确执行。当我从tablename中选择title时,会得到一堆行。包含ä的标题的标题为4B617A65206E6F2054616E69206E6F204E617573696361E4@LTM-我补充了我的答案。utf8mb4将支持Psi,而不是E4。我们需要找到一种安全的方法将文本转换为utf8mb4;我还没有找到安全的方法。我可能是误会了。但我不是在寻找一个将E4映射到Psi的字符集。基本上,我的默认排序规则是latin1_swedish_ci。这对我有用。我能够插入带有错误的Kaze no Tani no Nausicaä。但当我试图在latin1_swedish_ci列中插入一个带有ψ的标题时,typeORM抱怨有错误,没有插入ψ。我想这可能是因为latin1_swedish_ci不能表示ψ。因此,为了在db中插入ψ,我尝试将排序规则更改为utf8mb4。这导致了我的帖子中的错误。所以我要寻找的基本上是两件事:1。一个字符集,允许我同时拥有ψ和大多数其他类型的字符。2.一种将我的拉丁文1_瑞典文ci更改为该字符集/排序规则的方法。据我所知,我的数据没有损坏。当你说Hex E4与Psi无关时,我同意。我的问题不是我希望E4是ψ。我只想要一个字符集和一种将我的标题列转换为该字符集的方法。@LTM-是的,我换了一棵树。我更新了我的答案。