我有json数据。json文件中有“西里尔”字符串,如下所示:
\u0418\u0432\u0430\u043D\u043E\u0432 \u0418.
当我解码json并将这些数据放入数据库表时,我得到了字符串
Иванов И.
在one decoding web-site上我输入了这个字符串,得到了非常好的结果(我需要的那个)
Иванов И.
这个网站还告诉我它是从CP1252转换成UTF-8的。
所以我尝试在使用
mb_convert_encoding ( $string, "UTF-8","windows-1252");
mb_convert_encoding ( $string, "UTF-8","CP1252");
和
iconv("windows-1252","UTF-8",$string);
iconv("CP1252","UTF-8",$string);
任何这些函数都使数据库表中的字符串看起来像
Øòðýþò ÃËœ.
或
Øòðýþò Ø.
两个都没有在上面的网站正确解码。所以问题是,如何转换这个字符串?
UPD:使用了此SQL请求:
ALTER DATABASE logenterprise
CHARACTER SET utf8
试过上面写的同样的东西-结果是一样的。
也试过这个以防万一:
alter table mytable convert to CHARACTER SET utf8 COLLATE utf8_unicode_ci;
最佳答案
诅咒你该死的编码^^
他们也让我很难过。
一切看起来都很好(数据库、输入数据的编码和网站),但我的表中仍然有一些神秘的字符。那有什么问题吗?这是到数据库服务器的连接。
幸运的是,您可以通过一个简单的查询来解决这个问题。
在建立mysql连接之后,您需要执行以下查询:
mysql_query("SET NAMES 'utf8'");
喂。执行insert查询时,数据会很好地保存在数据库中。
这救了我很多次,因为我正在处理'变音'和$-标志。
注意:您不应该再使用mysql_xxx方法,因为它们已被弃用。我只是在示例中使用它们来使代码更清晰。