HTML中省略号不可见。

4

当从MySQL数据库拉取数据到网页时,所有数据中的省略号(...)在Firefox中显示为�或在IE7中显示为方框。

有人以前遇到过这个问题吗?

谢谢。

更新1:我刚刚用三个点替换了原来的省略号'...',现在它可以工作了。你有什么想法吗?


抱歉!我不再编辑了,否则我们会通过互相覆盖的编辑将这个可怜的家伙的帖子扔进 CW 模式! - Michael Myers
请原谅我的编辑,我认为方括号可能是一个更为常见的术语。 - Soviut
哦,我明白了!你以为他在谈论括号(或圆括号),但省略号是括号内的东西,看起来像三个点。 - Alan Moore
4个回答

3

这实际上是一个编码问题,但是我建议您使用更正确的方法将省略号编码为`…' HTML实体。

或者,您可以通过在Firefox中选择“查看”>“字符编码”>或在IE中选择类似选项来进行测试。最有可能的情况是您需要添加:

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

或者

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/> 

就我个人而言,我并不认为HTML实体是“更正确”的。它们只是编码问题的一种不完整的解决方法,仅适用于HTML,并且非常丑陋。 - Michael Borgwardt
同意迈克尔的观点。最好在这里解决编码问题,而不是试图通过实体来绕过它。因为编码问题迟早会浮出水面。 - Joey
也许不适用于存储,但就展示而言,我不明白为什么这不是一个好的解决方案。例如,在PHP中,调用htmlentities()函数可以解决此问题并增加另一层安全性。 - aleemb
此外,问题非常特定于HTML。如果输出到桌面客户端,则无法添加内容类型元标记(实际上,问题可能完全不存在)。 - aleemb

3

您可能正在从数据库中提取UTF-8数据,并将其用于具有ISO(或其他)编码的网站。

您的数据库中的编码是什么,您的HTML标头编码是什么?


我猜测数据库编码为windows-1252(ISO-8859-1甚至没有...),而网站则为UTF-8。 - d0k

1

这取决于您数据库的字符集

您始终可以用 &hellip; 替换它们。


1
我刚刚将原来的省略号 '…' 替换为 '...'(三个点),现在它可以工作了吗?
这可能是你想要做的事情。字符U+2026 HORIZONTAL ELLIPSIS是一个“兼容性”字符,用于帮助Unicode和旧字符集之间的往返转换,例如Windows cp1252(西欧代码页),其中省略号作为一个独立的字符存在。
(现代系统上的想法是,只需使用三个点;如果字体希望在省略号中提供不同的间距 - 大多数情况下不会这样做 - 它们可以为键入三个点时提供自动连字。)
所有省略号都是这样的。
省略号 :-)
在数据中显示为�(火狐浏览器)或方框(IE7)的可能是你的其他非ASCII字符也受到了类似的影响;当使用“智能引号”或重音符号时,你可能会看到类似的结果。

很可能你的数据库将字符存储为Windows cp1252字节,但最终的网页输出是UTF-8(默认或故意设置为这样)。

您可以通过转到浏览器的“查看”->“编码”菜单并选择“西欧”(1252)而不是“UTF-8”来检查此内容。虽然您可以通过更改生成的网页的编码为cp1252来修复此问题,但最好更改数据库的内容,使所有内容都是UTF-8;然后您的应用程序中的所有Unicode字符都将可用。

如何做到这一点取决于您使用的语言/平台。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接