在版权符号之前插入特殊字符“”

问题描述 投票:0回答:4

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

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

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

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

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

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

firefox character-encoding stylesheet
4个回答
13
投票

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

以 UTF-8 编码

如果是这样,请应用转换为 UTF-8-BOM。它将在您的文本文件中添加 3 个magic 字节,使 UTF-8 编码变得明确。保存文件并查看是否有效。

解释

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

现在,版权符号在 UTF-8 编码中有字节

0xC2 0xA9
11000010 10101001
,在 ANSI 编码中有字节
0xA9

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

0xC2
11000010

当遇到

11000010 10101001
并将其解释为 UTF-8 时,第一个字节
110
的前三位与第二个字节
10
的前两位相结合,指示 两字节 UTF-8 字符。所以这是版权符号的正确UTF-8编码。

但是,如果遇到

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

我认为©的UTF-8编码的第二个字节与一字节的ANSI编码相同并非巧合。看起来,Latin-1 补充以与 ANSI 中完全相同的顺序插入到 UTF-8 中,并具有相同的偏移量,使第二个字节相等。例如。 UTF-8 编码

μ

将显示为

µ

如果错误地解释为 ANSI。

也许,这样做是为了在出现编码错误时保留有关原始字符的一些信息。


11
投票
不要使用版权符号本身,而是尝试使用其数字:

©
    

5
投票
检查您是否在 html head 中设置了正确的 charset-meta-tag

<meta charSet="UTF-8"/>
    

0
投票
正如许多答案告诉我们的那样,浏览器不知道 CSS 文件的编码,因此版权符号不会按照我们希望的方式出现。

如果我们明确定义CSS文件的编码,我们可以解决这个问题。 将 CSS 文件的第一行设置为以下内容以指定 UTF-8 编码:

@charset "utf-8";


现在任何 CSS 注释中的 © 符号都将正确显示。

© www.soinside.com 2019 - 2024. All rights reserved.