Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.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
Php 错误字符编码mysql反向数据_Php_Mysql_Character Encoding - Fatal编程技术网

Php 错误字符编码mysql反向数据

Php 错误字符编码mysql反向数据,php,mysql,character-encoding,Php,Mysql,Character Encoding,因此,我正在尝试将土耳其语字符保存到我的数据库中,该数据库通常使用网站上的utf8\u general\u ci和UTF-8运行。但由于这个来自“土耳其”的项目,我似乎无法成功地将用户在其网站上输入的字符保存到我们的数据库中 它当前的保存方式如下: 卡莱 斯坦布尔 在保存到数据库之前,我用于在php中转换字符的代码是: iconv("ISO-8859-1", "UTF-8", $city); 在网站标题中,我使用: <html lang="tr-TR"> <meta htt

因此,我正在尝试将土耳其语字符保存到我的数据库中,该数据库通常使用网站上的
utf8\u general\u ci
和UTF-8运行。但由于这个来自“土耳其”的项目,我似乎无法成功地将用户在其网站上输入的字符保存到我们的数据库中

它当前的保存方式如下:

卡莱 斯坦布尔

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

iconv("ISO-8859-1", "UTF-8", $city);
在网站标题中,我使用:

<html lang="tr-TR"> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9" />

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

假设你从一个虚线大写字母I开始,然后将其移动3次,你可以得到
stanbul

İ --> Ä° --> Ä° -> Ä°
十六进制(对于utf8),即

当一只手认为编码是utf8,而另一只手认为编码是拉丁1时,Mojibake就会发生

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

CONVERT(二进制)转换(
转换(使用utf8mb4进行二进制转换(使用拉丁文1进行“转换”)
使用拉丁语(1))使用utf8mb4)


ð
变回
İ
。第三次迭代应该会消除您的混乱。

您需要在整个应用程序中设置UTF8的字符集。不要混淆字符集,这只会让你头疼。。我以前写过关于处理这个问题的文章。还有更深入的好的,谢谢,我已经按照清单做了。是否可以将当前存储的数据检索为可读的土耳其语字符数据?例如,将stanbul倒转为可读数据:伊斯坦布尔?如果其存储的字符集已损坏,则将变得很难。如果可以的话,重置数据可能更容易。如果您知道原始编码,并且数据没有损坏到无法修复的程度,那么有很多方法可以做到这一点。例如,互联网上有很多修复MySQL中存储的损坏字符串的技巧,因此我尝试了这些技巧,但它们似乎都不起作用。我添加了一个带有不可读字符的数据库img。
C4B0 --> C384C2B0 --> C383E2809EC382C2B0 --> C383C692C3A2E282ACC5BEC383E2809AC382C2B0

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