来自MySQL Db的Em Dash和En Dash与PHP

时间:2013-01-23 21:03:36

标签: php mysql utf-8

我正在尝试使用包含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'])));

如果我输出没有格式化的值,我会看到这个问号字符:

有谁知道怎么解决这个问题?我是否被迫用连字符替换它们,即使这在语法上是不正确的,或者有没有办法输出它们出现在数据库中?

1 个答案:

答案 0 :(得分:0)

我在从Db检索数据之前添加了相同的MySQL命令,这解决了这个问题。

mysql_query('SET NAMES utf8'); // Use utf-8

我不知道为什么这是必需的,但我会调查并查看是否可以将其设为默认值。