【问题标题】:• Suddenly Appearing instead of Bullets- 突然出现而不是子弹
【发布时间】:2017-03-22 20:21:00
【问题描述】:

我有一个非常简单的表单,它采用 textarea 并将内容放在 MySQL 数据库中,然后网站会显示该信息。到目前为止,一切正常,包括撇号和项目符号等特殊字符,但是,突然之间,撇号导致表单出错,项目符号显示如下: •

所有页面都元编码为 UTF-8,数据库排序规则为 UTF-8,文本区域字符串正在由 utf8_encode 命令处理。

什么可能导致这种情况突然发生?

我一直在这里寻找答案,但我只能找到人们在数据库或网页/表单上缺少 UTF-8 的情况。我唯一的假设是主机更新 PHP 版本,但是,我无法确认,因为他们使用的专有系统不允许我看到当前正在运行的版本号,而且我不知道它是否会受到这种影响.

如果重要的话,textareas 总是包裹在 HTML pre 标记中以进行格式化。

【问题讨论】:

    标签: php html mysql utf-8


    【解决方案1】:

    在 char 编码方面我显然有点落后 - 请确保您正确声明了 charset。

    https://www.w3.org/International/questions/qa-html-encoding-declarations

    html5 只需要<meta charset="utf-8">。如果您使用它,请确保您还在 html 顶部使用 <!DOCTYPE html>,否则您可能会遇到 HTML4 问题,<meta charset="utf-8"> 不起作用。

    【讨论】:

    • 这是倒退,你应该使用utf8。你引用了一个 7 岁的问题。从那时起,我们继续前进。
    • 感谢@nogad,已更新。很久没看到这个问题了。
    • 检查了我所有的编码,不幸的是没有骰子。
    【解决方案2】:

    在检查了几次所有内容都正确编码后,我最终尝试了以下解决方案:

    在将我的 textarea 中的数据传递给 MYSQL DB 之前,我运行了这个:

    mb_convert_encoding(textareacontents, "HTML-ENTITIES", "UTF-8")
    

    在我运行那条线之后,一切都开始工作了。我不完全确定为什么这个 mobijake 问题开始随机发生,尤其是在所有适当的字符集到位的情况下,但是,这似乎有帮助。希望这可以帮助陷入困境的人。

    【讨论】:

      【解决方案3】:

      • 是用于子弹的 Mojibake。使用this 找出您做错了什么。

      【讨论】:

      • 我浏览了指南以确保我没有遗漏任何内容,但是,我的 mobijake 问题仍然存在。但是,我将使用您链接的帖子以供将来参考,因为那里有一些很棒的信息。
      • 我花了好几年的时间来收集和简化那个链接。我很想知道最终原因是什么;也许我的链接有问题。
      • 我刚刚在这个帖子上发布了我的答案。老实说,我认为主机端发生了一些事情,我正在补偿他们改变的一些东西,因为在这个问题出现的时候有一些停机时间。除了编码的基础知识外,我什么都不是很精通,所以我可能是错的。
      • SELECT HEX(col) ... 查看数据是否存储正确。
      • 我确实这样做了,并且所有数据都完好无损,但是,项目符号显示为它们的 mobijake 等效项。运行我的答案后,mobijakes 只是子弹字符。
      猜你喜欢
      • 1970-01-01
      • 2012-01-20
      • 2020-01-09
      • 2015-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-19
      相关资源
      最近更新 更多