[英]How to properly display non-redable characters stored in a MySQL Database
我将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
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语句:
'SET NAMES 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,该查询都会起作用。 在拉动数据之前,只需在用于提取数据的同一连接上运行它(只需要执行一次)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.