从db表打印文本中的字符集问题

问题描述:

我有一个数据库定义的字符集utf8_general_ci和一个表,应该存储从文本区域形式插入相同的字符集的一些文本。从db表打印文本中的字符集问题

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

<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,在您的标题页包括:

<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你的输出文本($输出)

+0

我媒体链接使用它的标签,我会尝试其他方法 – Matteo

+0

它最好实现以上所有,meta标签不会提供修复 – SW4

+0

nl2br($ output)这是正确的答案。解决了我的问题。很多人! – Matteo