【问题标题】:php certain characters returning odd html [duplicate]php某些字符返回奇怪的html [重复]
【发布时间】:2012-10-06 21:23:21
【问题描述】:

可能重复:
Browser displays � instead of ´

在我的网站上,当我从其他人的文本文档中复制使用不同字符的文本块时,例如较长的破折号和除 '' "" 之外的其他类型的引号,它会返回 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']);

我的 php 在页面上输出为 html 是:

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

我做错了什么?

【问题讨论】:

  • 查看我对这个问题的回答:stackoverflow.com/questions/12220453/…
  • 通过删除所有非字母数字字符和符号的正则表达式运行字符串。编辑:也就是说,如果你想删除“损坏”字符。

标签: php special-characters quotes output


【解决方案1】:

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

如果您不了解标头,则必须在将任何内容发送回您的浏览器之前发送它们,因此它应该确实位于顶部,如果不是第一行的话。

【讨论】:

  • 在 CoursesWeb 上查看我的 cmets
  • 您所指的元标记实际上已经不再使用了。您的服务器会自动发送Content-type 的标头,它会取代您在元标记中放置的内容。您可以删除该标签或更改它,它应该没有太大区别。您确实需要发送正确的字符集作为 http 标头的一部分。您可以在您的 php.ini 文件中调整它(我认为),或者更简单的方法是使用该 header() 命令启动您的 php 脚本。
  • 好吧,无论我尝试了什么,我已经尝试了我在互联网上可以找到的所有内容,它甚至都没有开始解决问题:\
  • 你把php头文件放在那里了?这是假设您的内容是 utf-8,您知道它是什么吗?
【解决方案2】:
【解决方案3】:

如果字符集对您没有帮助,我有一个骇人听闻的解决方案。如果它只是您担心的静态文本(即数据库中没有任何内容),这可能会起作用。选择您的文本,将其复制并粘贴到纯文本编辑器中,如果您在 Windows 上,记事本(不是写字板)可能会解决问题。复制您刚刚粘贴的内容,然后将其粘贴到您的 php/html 文件中。试一试,可能会用更标准的字符替换“坏”字符。

【讨论】:

  • 这个文本是这样输入到数据库中的,这个问题是从一个文档(比如pages,word)中复制文本,然后保存,所以好像和将其输入到数据库中。
  • 那可能是 mysql 的问题?你的字符集是什么?我知道 latin1 是大多数安装的默认设置。前段时间我经历过这个,我把所有的表都改成了 utf-8,并在 php 中输出了上面提到的标题,我可以显示所有内容(口音、中文等)。
  • 也许在你的 mysql shell 中做一些查询,以确保那里的数据没有被破坏。如果它以损坏的格式存储,那么无论如何您都无法在 php/html 世界中修复它。
  • 好吧,我将我的数据库更改为 utf-8,但这并没有解决问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-22
  • 2013-06-06
  • 2019-07-05
  • 2017-07-04
  • 2018-03-11
相关资源
最近更新 更多