【问题标题】:Special character 'Â' inserted before copyright symbol版权符号前插入特殊字符 'Â'
【发布时间】:2017-08-15 11:20:11
【问题描述】:

我们的源代码在每个 CSS 文件的顶部都包含版权...

/* 版权所有 © ... */

Firefox 样式编辑器每次加载 CSS 文件时,都会在版权符号前插入一个特殊字符...

/* 版权所有 © ... */

每次加载文件时都会添加一个额外的特殊字符。我不相信这仅限于 Firefox,但这就是我目前用于 CSS 动态样式的方法。每次都必须删除这个字符很烦人,偶尔它会进入提交和推送。

问题:如何防止特殊字符插入?

【问题讨论】:

  • 插入一个显式的@charset "UTF-8";在每个 .css 文件的顶部无效。
  • 找到了一个简单的方法来重现这个。加载 about:blank,右键单击 -> 检查元素,选择样式编辑器,然后从磁盘加载任何带有版权字符的本地 .css 文件。

标签: firefox character-encoding stylesheet


【解决方案1】:

我的建议是打开Notepad++ 中的文件并检查检测到的编码,如编码 菜单下所示。我希望它会这样写:

UTF-8 编码

如果是这样,应用转换为 UTF-8-BOM。它会将 3 个 magic 字节添加到您的文本文件中,从而明确 UTF-8 编码。保存文件,看看它是否有效。

说明

出现此 Â 的原因是某些工具未正确检测编码并假定它是 ANSI(又名Windows-1252)或ISO 8859-1。对于普通的英文文本和代码文件,那些单字节编码和 UTF-8 非常相似。标准 ASCII 集的编码方式完全相同。只有特殊字符(例如您的情况下的版权符号)的编码方式不同,使用四个字节中的两个、三个而不是一个。

现在,版权符号有字节0xC2 0xA9 or 11000010 10101001 in UTF-8 encoding和字节0xA9 in ANSI encoding

带抑扬符的拉丁大写字母 A 在 ANSI 编码中具有字节 0xC211000010

当遇到11000010 10101001 并将其解释为UTF-8 时,第一个字节110 的前三位与第二个字节10 的前两位组合表示the start of a two-byte UTF-8 character .所以这是版权符号的正确 UTF-8 编码。

但是,如果遇到 11000010 10101001 并将其解释为 ANSI,则会看到两个单独的字符, 和 ©。

我认为©的UTF-8编码的第二个字节与一个字节的ANSI编码相同并非巧合。看起来the Latin-1 supplement 恰好在same order as it has in ANSI 处插入了UTF-8,并且具有相同的偏移量,使第二个字节相等。例如。一个 UTF-8 编码的

µ

会显示为

μ

如果错误地解释为 ANSI。

也许,如果发生编码错误,这样做是为了保留有关原始字符的一些信息。

【讨论】:

  • 回到这个...手动插入 BOM 字符不起作用。之后打开文件...  /* 版权所有 © ... */.我在使用 Chrome 开发工具时也注意到了同样的情况。但是,打开 .js 文件没有这个问题。它仅适用于 .css 文件。
  • @jmelvin,输出中的附加字符是UTF-8 byte order mark 的 ANSI 表示。因此,即使现在您添加了显式 BOM,编辑器仍将其持续解释为 ANSI。这不是我在 Firefox 样式编辑器中看到的。也许,您可以通过使用 Notepad++ 之类的东西将其转换为 ANSI 来解决问题,或者将 © 替换为 (c)。如果你有在线的 css,你可以提供 url,我会仔细看看。
  • 我尝试在 index.html 中将字符集设置为 UTF-8,这是加载主 CSS 文件(包括其他 CSS 文件)的链接标记,还尝试在主文件中插入 BOM CSS 文件。一切都无济于事。 Mac 上的 Firefox 样式编辑器仍然坚持将其解释为 ANSI。您可以查看在sizzlescene.com/sizzlesceneclient/dist/index.html 上演的应用程序并检查任何 CSS 文件。谢谢你偷看。顺便说一句,在 Mac 上运行 FF。
  • @jmelvin,刚才看了链接,目前只有main.css的缩小版,没有版权cmets,也没有导入其他css文件。
【解决方案2】:

不要使用版权符号本身,而是尝试使用它的数字编号:

©

【讨论】:

    【解决方案3】:

    检查您是否在 html 头中设置了正确的 charset-meta-tag

    <meta charSet="UTF-8"/>
    

    【讨论】:

    • 我们在 html 头中确实有以下设置...
    • 你可以很容易地在本地复制它。使用 Firefox 加载 about:blank,右键单击 -> 检查元素,选择样式编辑器,然后从磁盘加载任何带有版权字符的本地 .css 文件。
    • 我也这样做了,并使用了&amp;#169;,并且它有效(需要进行两项更改)。
    猜你喜欢
    • 2017-09-01
    • 2015-12-31
    • 2016-11-24
    • 1970-01-01
    • 2017-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-25
    相关资源
    最近更新 更多