错误字符编码mysql反向数据

时间:2019-03-15 11:35:45

标签: php mysql character-encoding

因此,我试图将土耳其语字符保存到我的数据库中,该数据库通常在网站上以Juan,Dela Cruz Maria,Magdalena Mario,Santos 和UTF-8运行。但是由于该项目来自“土耳其”,我似乎无法成功地将用户在其网站上输入的字符保存到我们的数据库中。

当前保存如下:

  

KÄá±rÄ ±kkale
  ÃƒÂÃâ¢stanbul

在保存到数据库之前,我用来在php中转换字符的代码是:

Juan,Dela Cruz
,Maria,Magdalena
,Mario,Santos

在网站标题中,我使用:

,

有人知道如何将其正确编码为可读数据吗?我是否有可能将当前存储的数据更改为可读数据?  Database preview

1 个答案:

答案 0 :(得分:0)

假设您以虚线大写字母I开始,然后将其Mojibake 3次,则可以得到Ä°stanbul

İ --> Ä° --> Ä° -> Ä°

以十六进制表示(对于utf8),即

C4B0 --> C384C2B0 --> C383E2809EC382C2B0 --> C383C692C3A2E282ACC5BEC383E2809AC382C2B0

For example, C4 B0 is the single character `İ` in utf8, but the 2 characters `Ä°` in latin1.

当一只手认为编码是utf8而另一只手认为编码是latin1时,就会发生Mojibake。

对于土耳其语,您需要使用UTF-8(MySQL将其称为utf8或utf8mb4)

CONVERT(BINARY(CONVERT( CONVERT(BINARY(CONVERT('Ä°' USING latin1)) USING utf8mb4) USING latin1)) USING utf8mb4)

会将Ä°改回İ。第三次迭代将消除您的混乱情况。

相关问题