在版权符号前插入特殊字符 'Â'

jme*_*vin 9 firefox stylesheet character-encoding

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

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

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

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

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

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

R. *_*urs 12

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

\n\n
\n

以 UTF-8 编码

\n
\n\n

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

\n\n

解释

\n\n

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

\n\n

现在,版权符号UTF-8 编码的bytes0xC2 0xA911000010 101010010xA9ANSI 编码的byte 。

\n\n

带扬抑符的拉丁文大写字母 A具有ANSI 编码中的字节0xC2或。11000010

\n\n

11000010 10101001遇到 并解释为 UTF-8 时,第一个字节 的前三位110与第二个字节 的前两位组合,10表示双字节 UTF-8 字符 的开始。所以这是版权符号的正确UTF-8编码。

\n\n

但是,如果11000010 10101001遇到并解释为 ANSI,则会看到两个单独的字符:\xc3\x82 和 \xc2\xa9。

\n\n

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

\n\n
\n

\xc2\xb5

\n
\n\n

会显示为

\n\n
\n

\xc3\x82\xc2\xb5

\n
\n\n

如果错误地解释为 ANSI。

\n\n

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

\n


小智 6

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

©
Run Code Online (Sandbox Code Playgroud)


Mat*_*ulz 6

检查你的 html head 中是否设置了正确的 charset-meta-tag

<meta charSet="UTF-8"/>
Run Code Online (Sandbox Code Playgroud)