3

我有json数据。json 文件中有“西里尔文”字符串,如下所示:

\u0418\u0432\u0430\u043D\u043E\u0432 \u0418.

当我解码 json 并将这些数据放入数据库表中时,我得到了字符串

Иванов И.

一个解码网站上,我输入了这个字符串并且非常好(我需要的那个)

Иванов И.

而且这个网站告诉我它是从 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);

这些函数中的任何一个都使数据库表中的字符串看起来像

Øòðýþò ÃËœ.

或者

Øòðýþò Ø.

两者都没有在上述网站上正确解码。所以问题是,我如何转换这个字符串?

更新:使用了这个 sql 请求:

ALTER DATABASE logenterprise
    CHARACTER SET utf8

尝试了上面写的相同的东西 - 结果是一样的。也试过这个以防万一:

alter table mytable convert to CHARACTER SET utf8 COLLATE utf8_unicode_ci;
4

1 回答 1

1

诅咒你该死的编码^^他们也让我很难过。

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

幸运的是,您可以通过一个简单的查询来解决这个问题。

在建立 mysql- connection之后,您需要执行以下查询:

mysql_query("SET NAMES 'utf8'");

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

当我处理“元音变音”和欧元符号时,这节省了我很多次。


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

于 2013-05-10T21:18:54.270 回答