php - 从数据库表打印文本的字符集问题

标签 php mysql utf-8 character-encoding textarea

我有一个用字符集 utf8_general_ci 定义的数据库和一个表,该表应存储从具有相同字符集的文本区域表单插入的一些文本。

我用来获取文本的形式是这样的:

<form action="submit_text.php" method="post">

    Text:</br>
    <textarea name="text" cols="109" rows="20">
        <?php echohtmlspecialchars($_POST['text']);?>
    </textarea>

    <input name="submit" type="submit" value="save text">

</form>

我用来将此文本保存在我的数据库中的 php 指令如下:

$text = $_POST['text'];
$query = "INSERT INTO table_name VALUES (..., '$text', ...)";
$query_result = mysql_query($query) or die (mysql_error());
return $query_result;

然后我有一个页面,通过选择表的一个元素然后回显查询结果的文本字段(不显示查询部分)来打印保存在数据库表中的文本:

<div class="entry">
    <?php echo $selected_element_of_table['text'];?>
</div>

但是,文本中的所有特殊字符都被搞砸了,换行符和制表符都没有正确打印。

有人知道我的问题是什么吗? 我应该更改字符集编码吗?

提前致谢!

最佳答案

一些尝试:

在将显示 UTF-8 content 的页面中,在您的 header 中包括:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

在您的 PHP 中,在向浏览器输出任何内容之前,包括 content type PHP header :

header ('Content-type: text/html; charset=utf-8');

在运行 SQL 获取内容之前,请使用 mysql_set_charset :

mysql_set_charset('utf8',$link); 
// $link is optional, refers to your DB connection

如果您希望输出换行符/回车符,请将输出文本包装在 nl2br 中($输出)

关于php - 从数据库表打印文本的字符集问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7684943/

相关文章:

php - 与 Postgres 一起工作的图像/媒体服务器

php - 如何在两个单独的 html5 表上显示两个具有不同数据量的表中的数据?

php - 在不刷新页面的情况下单击链接运行 PHP 脚本

mySQL - 根据连续差异对值进行分组

powershell - 从另一个powershell脚本调用一个powershell脚本并保证它是UTF8

php - 在 MySQL 中选择 n 个组的随机子集

php - 使用 Dompdf 的 While 循环输出表

php - 如何检查基于 Apache/PHP 的服务器上的并发请求?

Python3 将字符串转换为字节

python - 在 Python 中从套接字读取时解码内容