我有一个使用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>
但是,文本中的所有特殊字符都被搞砸了,并且没有正确打印换行符或制表符。
有人知道我的问题是什么吗? 我应该更改字符集编码吗?
提前致谢!
答案 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)