我有json数据。 json文件中有“cyrillic”字符串,如下所示:
\u0418\u0432\u0430\u043D\u043E\u0432 \u0418.
当我解码json并将此数据放入数据库表时,我得到字符串
Иванов И.
在one decoding web-site上我输入了这个字符串并且非常好(我需要的那个)
Иванов И.
此网站也告诉我它已从CP1252转换为UTF-8。 所以我尝试使用
手动解码后从json转换数据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;
答案 0 :(得分:1)
一切看起来都很好(数据库,输入数据的编码和网站上的编码),但我的表格中仍然有神秘的字符。那么问题是什么呢?它是与数据库服务器的连接。
幸运的是,您可以通过简单的查询解决此问题。
在建立mysql连接之后,你需要执行以下查询:
mysql_query("SET NAMES 'utf8'");
瞧。执行INSERT-Query时,数据会很好地保存在数据库中。
当我处理'变形金刚'和€ - 签名时,这多次救了我的屁股。
注意:您不应再使用mysql_xxx方法,因为它们已被弃用。我只是在示例中使用它们来使代码更清晰。