我正在尝试使用 PHP 输出一个包含 em dash 和 en dash 的 MySQL 数据库字段,但是尽管 ROWs 输出,这些破折号的值却没有。
据我所知,这些字符应该以正确的英语使用,因此我认为我不应该将它们剥离或用替代品(如连字符)替换它们。
通过在 INSERT 之前添加此代码,我能够正确地将 em dash 和 en dash 放入数据库(而没有这一行,我看到了不需要的字符):
mysql_query('SET NAMES utf8');
但是,该值不会输出。数据库表及其字段正在使用 utf8_general_ci 排序规则,我的 PHP 页面中有这些行:
header('Content-type: text/html; charset=utf-8');
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
我正在输出这样的值:
echo nl2br(htmlentities(preg_replace("/[\r\n]+/", "\n\n", $row['someText'])));
如果我输出没有格式化的值,我会看到这个问号字符:
�</p>
有谁知道如何解决这个问题?即使语法不正确,我是否被迫用连字符替换它们,或者有没有办法在它们出现在数据库中时输出它们?