从db表打印文本时出现charset问题

时间:2011-10-07 08:49:14

标签: php mysql utf-8 character-encoding textarea

我有一个使用charset 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>

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

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

提前致谢!

1 个答案:

答案 0 :(得分:2)

要尝试的一些事项:

在显示UTF-8 content的页面中,标题中包含:

<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($ output)