2

我正在尝试使用 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>

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

4

1 回答 1

0

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

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

我不知道为什么需要这样做,但我会进行调查,看看是否可以将其设为默认值。

于 2013-01-24T14:09:49.727 回答