2012-10-16 152 views
1

可能重复:
Browser displays � instead of ´PHP的某些字符返回奇HTML

在我的网站,当我复制的文本块从使用不同的字符,比如别人的文本文档更长的短划线和除“'”之外的其他类型的引号返回html垃圾。如:

9 am – 4 pm 

的样子:

9 am � 4 pm 

as ‘secrets’, ‘remembering/keeping,’, narratives, and ‘surprises.’ 

的样子:

as �secrets�, �remembering/keeping,�, narratives, and �surprises.� 

我的PHP用于插入数据简单地说就是:

strip_tags($_POST['details']); 

和我的网页上输出为HTML是php:

stripslashes(linkify(nl2br(htmlentities($row['body'])))); 

我究竟做错了什么?

+0

请参阅我对此问题的回答:http://stackoverflow.com/questions/12220453/mysql-insert-column-half-inserted/12220491#12220491 –

+0

通过正则表达式运行字符串,该正则表达式将删除所有非字母数字字符和符号。编辑:也就是说,如果你想删除'腐败'字符。 – Scott

回答

0

你的html中有utf字符,你可以做很多事情,最好的办法是调整php页面顶部的标题....就像上面提到的coursesweb一样。

如果你不知道标题,你必须在之前发送任何东西发回给你的浏览器,所以它应该是真正的顶端,如果不是第一条线。

+0

查看我对课程的评论Web –

+0

您所指的元标记实际上并未真正使用过多。您的服务器会自动发送“Content-type”的标题,该标题取代您在元标记中放入的内容。您可以删除该标签或对其进行更改,而且应该没有什么区别。你真的需要发送正确的字符集作为**标题**的一部分。你可以在你的php.ini文件中调整它(我认为),或者更简单的方法是使用header()命令启动你的php脚本。 – Landon

+0

不管我尝试过什么,我尝试了所有可以在互联网上找到的东西,它甚至不开始解决问题:\ –

0

尝试使用这个头在PHP中,前输出数据:

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

和:

<meta http-equiv="content-type" content="text/html; charset=UTF-8" /> 

在HTML文档。 另外,请检查MySQL以查看日期是如何注册的。

+0

我的页面已经设置好了,但已经设置了 。 –

+0

实际上,它是这样插入到数据库的,所以它只是像这样输出,它在textarea和php插入之间有一定的关系。 –

0

如果charset的东西没有帮助你,我有一个hackish的解决方案。如果它只是你担心的静态文本(即数据库中没有任何内容),这可能会起作用。选择你的文本,复制并粘贴到一个纯文本编辑器中,如果你在windows上,记事本(不是写字板)可能会诀窍。复制你刚刚粘贴的内容,然后粘贴到你的php/html文件中。试试看,可能会用更多标准字符替换“坏”字符。

+0

这个文本以这种方式被输入到数据库中,当从文档(如页面或单词)处理文本时出现此问题,然后保存它,所以它看起来好像是将它输入到数据库中。 –

+0

也许这是一个MySQL的东西呢?那里你的字符集是什么?我知道latin1是大多数安装的默认设置。我前一阵子经历了这些,我将所有表格改为utf-8,并在php中输出上述头文件,并且可以显示所有内容(重音符,中文等)。 – Landon

+0

也许在你的mysql shell中做一些查询,以确保数据不会在那里被破坏。如果它以破损的格式存储,那么无论如何你都无法在php/html世界中进行修复。 – Landon