0

我在将 UTF-8 名称写入 MySQL 数据库时遇到问题……这就是我所拥有的。

PHP页头有....

<meta charset="utf-8">

MySQL 列是:Char (80) with utf8_unicode_ci(这些最初是 latin1...我已将它们更改为 UTF-8,截断数据库,然后重新运行代码)

变量回显到屏幕:Germán Mera

但将其写入数据库Germán Mera

我尝试放置utf8_encode();变量,但随后它写入数据库为:Germán Mera和屏幕为Germán Mera(我知道该命令仅适用于 iso-8859-1 ..我认为 JSON 页面已经是 UTF-8)

这是我用来获取名称的代码摘录(为简单起见,我只显示相关代码 - 我知道下面显示的内容不安全)

$str = file_get_contents('http://fantasy.mlssoccer.com/web/api/elements/647/');
$jsonarray = json_decode($str, true);
$name = $jsonarray['web_name'];
mysqli_query ($con, "INSERT INTO mlsprices (name) VALUES ('$name')");

知道如何让它正确写入数据库吗?当我搜索时,我只会得到相当复杂的答案(例如this),而且肯定有更简单的方法。

4

1 回答 1

2

SET NAMES 'UTF8'连接 MySQL 后尝试使用:

$con=mysqli_connect("host", "user", "pw", "db");   
if (!$con)
{
    die('Failed to connect to mySQL: ' .mysqli_connect_errno());
}

/* change character set to utf8 */
if (!$con->set_charset("utf8")) {
    printf("Error loading character set utf8: %s\n", $con->error);
}

正如手册所说:

SET NAMES 指示客户端将使用什么字符集将 SQL 语句发送到服务器......它还指定服务器应该使用的字符集将结果发送回客户端。

于 2013-05-26T23:53:01.627 回答