【问题标题】:U+0008 Character added to string in certain browsersU+0008 在某些浏览器中添加到字符串的字符
【发布时间】:2012-09-07 17:35:00
【问题描述】:

我的网站上有一个 cmets 部分。这些 cmets 存储在 MySQL 数据库中具有“文本”数据类型和 latin1_swedish_ci 排序规则的字段中。当我回显查询结果以显示 cmets 时,字符 U+0008(退格)显示在 Firefox、Opera 和其他浏览器中。 Chrome 会忽略这一点,只显示空白。有什么办法可以去掉这个字符?

编辑: 我在网站上有两个部分,一个是我发布通知的地方,另一个是用户发布 cmets 的地方。包含内容的“消息”字段具有相同的配置和回显。正如我所说,无论我是通过网站发布 cmets 还是通过直接查询发布,都没有什么区别。值得注意的是,末尾带有 -tag 的注释没有附加 U+0008 字符。

【问题讨论】:

  • 你不应该删除它。你应该找到它的来源,并在那里修复。
  • 我会尝试手动添加一个值,可能是表单或提交引起的......
  • 顺便说一句:你为​​什么使用 latin1 编码?
  • 这是我的主机默认设置的,我没有对此进行任何更改。我尝试通过手动执行查询来添加值,但错误仍然存​​在,因此它应该是数据库中的错误或 php 错误。在此期间我会尝试更多的东西......
  • “这是我的主机默认设置的” - 我不明白。您必须同时控制数据库编码和连接编码,否则以垃圾结尾

标签: php mysql


【解决方案1】:

将 MySQL 中的排序规则从 latin1_swedish_ci 更改为 unicode 并尝试。可能是数据在输入时以 unicode 编码,但在存储在数据库中时会丢失编码并以 unicode 字符串显示退格。但是,您需要按照@WebnetMobile.com 的建议找出它的来源

【讨论】:

  • 也试过了,但这并没有什么不同。我在网站上有两个部分,一个是我发布通知的地方,一个是用户发布 cmets 的地方。包含内容的“消息”字段具有相同的配置和回显。正如我所说,无论我是通过网站发布 cmets 还是通过直接查询发布,都没有什么区别。值得注意的是,末尾带有 标记的注释没有附加 U+0008 字符。
【解决方案2】:

我在echo 函数中替换了一个空格。这显然解决了这个问题。我真的不知道如何解决它,但是 U+0008 字符都消失了......

【讨论】:

  • 这个空间是怎么产生的?你做了一个简单的 str_replace 来删除它吗?
  • 我什么都没做,可能是我的键盘出了点问题,或者我曾经使用过的 C 面板上的代码编辑器的编码一定有问题,因为我的代码中有一个退格字符,看起来像 Webmatrix 中的空格。当我改写这行时,问题像魔术一样解决了;)
  • 好吧..对我来说听起来像是黑魔法! ;) 无论如何,很高兴它为你解决了
  • @Raidenace 确实可以,我会将您的答案标记为正确的答案,因为这可能比答案更能帮助其他有相同问题的人,这仅针对我的情况;)跨度>
猜你喜欢
  • 1970-01-01
  • 2018-06-03
  • 2013-10-19
  • 2013-06-10
  • 2021-12-05
  • 2015-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多