我正在尝试使用包含em dash和en dash的输出MySQL数据库字段,但是虽然输出了ROWs,但这些破折号的值却没有。
据我所知,这些字符应该以适当的英语使用,因此我认为我不应该将它们剥离出来或用替代品替换它们(如连字符)。
通过在INSERT之前添加此代码,我可以正确地使用em破折号并快速进入数据库(而没有这行我会看到不需要的字符):
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'])));
如果我输出没有格式化的值,我会看到这个问号字符:
有谁知道怎么解决这个问题?我是否被迫用连字符替换它们,即使这在语法上是不正确的,或者有没有办法输出它们出现在数据库中?
答案 0 :(得分:0)
我在从Db检索数据之前添加了相同的MySQL命令,这解决了这个问题。
mysql_query('SET NAMES utf8'); // Use utf-8
我不知道为什么这是必需的,但我会调查并查看是否可以将其设为默认值。