如何转换json数据?

时间:2013-05-10 16:13:17

标签: php json utf-8 character-encoding

我有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;

1 个答案:

答案 0 :(得分:1)

诅咒你该死的编码^^ 他们给了我很多时间。

一切看起来都很好(数据库,输入数据的编码和网站上的编码),但我的表格中仍然有神秘的字符。那么问题是什么呢?它是与数据库服务器的连接。

幸运的是,您可以通过简单的查询解决此问题。

在建立mysql连接之后,你需要执行以下查询:

mysql_query("SET NAMES 'utf8'");

瞧。执行INSERT-Query时,数据会很好地保存在数据库中。

当我处理'变形金刚'和€ - 签名时,这多次救了我的屁股。


注意:您不应再使用mysql_xxx方法,因为它们已被弃用。我只是在示例中使用它们来使代码更清晰。