0

经过多次尝试,我无法以正确的编码 (UTF-8) 格式从我的数据库中获取数据。

这是我的连接(config.php)文件:

<?php
define("DB_HOST", "localhost");
define("DB_USER", "user");
define("DB_PASSWORD", "");
define("DB_DATABASE", "db");
$dbcon = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE);
?>

我用于检索数据的 php 表单:

<?php 

include('config.php');
$sqlget="SELECT * FROM table";
$sqldata= mysqli_query($dbcon, $sqlget) or die ('error');
mysqli_set_charset('utf8');
echo"<table>";
echo"</table";
?>
4

5 回答 5

2

您没有发送链接标识符 mysqli_set_charset($dbcon , "utf8");

来自php手册:

bool mysqli_set_charset ( mysqli $link , string $charset )

并在执行查询之前设置它。

于 2013-04-14T17:33:43.710 回答
1

在 SELECT之后设置编码有点晚
了 在运行任何查询之前设置它

<?php
define("DB_HOST", "localhost");
define("DB_USER", "user");
define("DB_PASSWORD", "");
define("DB_DATABASE", "db");
$dbcon = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE);
mysqli_set_charset('utf8');
于 2013-04-14T17:30:14.443 回答
1

实现这一目标的最简单方法是运行以下任何一种:

// for procedural MySQL (obsolete in PHP 5.4/5.5!)
mysql_query("SET NAMES 'utf8';", $link);

// for procedural MySQLi
mysqli_query("SET NAMES 'utf8';", $link);

// for MySQLi, function notation
mysqli_set_charset($link, "utf8");

// for MySQLi, method notation
$mysqli->set_charset("utf8");

// for PDO
$pdo = new \PDO("mysql:host={$host};dbname={$database};charset=utf8", $user, $password);

这将保证检索到的数据将以 UTF-8 编码返回。

希望有帮助:)

于 2013-04-14T17:38:42.347 回答
0

尝试在查询之前设置字符集。

于 2013-04-14T17:31:10.060 回答
0

秩序很重要。您需要在开始执行查询之前设置连接编码,否则为时已​​晚:

mysqli_set_charset('utf8');

应在您连接后立即执行:

<?php
define("DB_HOST", "localhost");
define("DB_USER", "user");
define("DB_PASSWORD", "");
define("DB_DATABASE", "db");
$dbcon = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE);    
mysqli_set_charset('utf8');
于 2013-04-14T17:31:32.007 回答