gpt4 book ai didi

php - 如何正确显示存储在 MySQL 数据库中的不可读字符

转载 作者:可可西里 更新时间:2023-11-01 08:35:09 25 4
gpt4 key购买 nike

我有 São Tomé and Príncipe存储在 MySQL 数据库中。

它在我的网页上显示为 S�o Tom� and Pr�ncipe

有没有办法直接从数据库中正确显示它?

我的 MySQL 类型是 MyISAM排序规则是 utf8_general_ci

我的网页字符集是<meta charset="utf-8">

字段类型设置为 varchar(30)和字段排序规则与表 utf8_general_ci 相同

PHP 功能测试

utf8_decode()将字符转换为 S?o Tom? and Pr?ncipe htmlspecialchars_decode()将字符转换为 S�o Tom� and Pr�ncipe html_entity_decode()将字符转换为 S�o Tom� and Pr�ncipe quoted_printable_decode()将字符转换为 S�o Tom� and Pr�ncipe htmlentities()返回空白结果

感谢@SAEVEN 让它开始工作

在我的查询 SELECT 之前运行它

mysqli_query($GLOBALS['db_link'], "SET NAMES 'utf8'");

最佳答案

是否需要在连接级别指定命名空间排序规则?

我假设您已经掌握了基础知识,您的 HTML 标记中的字符集为 utf8。

在执行任何数据库查询之前尝试执行此 SQL 语句:

'设置名称 utf8'

例如,如果您正在使用 PDO

// do your regular connection logic whatever it is
$dbc = new PDO( .... );
$dbc->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$dbc->query( 'SET NAMES utf8' );

// run your queries beneath
....

或者可以使用速记

new PDO(
'mysql:host=mysql.example.com;dbname=awesome_db',
"username",
"password",
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")
);

无论您使用什么 DBAL,该查询都会起作用。只需在用于提取数据的同一连接上运行它,然后再提取数据(只需要完成一次)

关于php - 如何正确显示存储在 MySQL 数据库中的不可读字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15561629/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com