繁体   English   中英

如何从SQL数据库检索UTF-8数据?

[英]How to retrieve UTF-8 data from SQL database?

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

这是我的connection(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";
?>

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

从PHP手册:

bool mysqli_set_charset(mysqli $ link,字符串$ charset)

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

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');

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

// 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编码返回。

希望有帮助:)

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

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

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');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM