PHP读取MySQL中文数据出现乱码的解决方法
在PHP使用MySQL进行中文数据处理时,有可能会出现中文数据乱码的问题。这是因为MySQL默认的字符集是Latin1,而在处理中文数据时,需要使用UTF-8字符集。以下是使用PHP解决MySQL中文数据乱码的方法。
方法一:设置MySQL字符集
在连接MySQL数据库时,可以指定字符集为UTF-8。使用mysqli_connect函数连接MySQL数据库时,可以在连接字符串中增加 参数字符集 设置为utf8,如下所示:
$con = mysqli_connect("localhost","user","password","my_db");
mysqli_set_charset($con, "utf8");
使用PDO连接MySQL数据库时,在dsn字符串后面加charset=utf8即可,如下所示:
$dsn = "mysql:host=localhost;dbname=my_db;charset=utf8";
$pdo = new PDO($dsn, $user, $password);
方法二:设置PHP字符集
如果无法在连接MySQL时设置字符集,还可以在PHP文件中设置字符集。可以使用PHP的header函数设置字符集为UTF-8,如下所示:
header("Content-Type:text/html;charset=utf-8");
另外,也可以使用PHP的ini_set函数设置字符集,如下所示:
ini_set('default_charset', 'utf-8');
示例一:使用mysqli连接MySQL设置字符集
$con = mysqli_connect("localhost", "user", "password", "my_db");
if (!$con) {
die("连接失败" . mysqli_connect_error());
}
mysqli_set_charset($con, "utf8");
$result = mysqli_query($con, "SELECT * FROM user");
while ($row = mysqli_fetch_array($result)) {
echo $row['name'];
}
mysqli_close($con);
示例二:使用PDO连接MySQL设置字符集
$dsn = "mysql:host=localhost;dbname=my_db;charset=utf8";
$user = "user";
$password = "password";
try {
$pdo = new PDO($dsn, $user, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT * FROM user";
$stmt = $pdo->query($sql);
while ($row = $stmt->fetch()) {
echo $row['name'];
}
} catch (PDOException $e) {
echo "连接失败:" . $e->getMessage();
}
$pdo = null;
以上是使用PHP解决MySQL中文数据乱码的方法和示例,可以根据实际情况进行选择使用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php读取mysql中文数据出现乱码的解决方法 - Python技术站