jme*_*vin 9 firefox stylesheet character-encoding
我们的源代码在每个 CSS 文件的顶部都包含版权...
/* 版权所有 © ... */
Firefox 样式编辑器每次加载 CSS 文件时,都会在版权符号前插入一个特殊字符...
/* 版权所有© ... */
每次加载文件时,它都会添加一个额外的特殊字符。我不认为这仅限于 Firefox,但这就是我目前用于 CSS 动态样式的方法。每次都必须删除这个字符很烦人,偶尔它会进入提交和推送。
问题:如何防止特殊字符插入?
R. *_*urs 12
我的建议是在Notepad++中打开文件并检查检测到的编码,如“编码”菜单下显示的那样。我希望它会读到:
\n\n\n\n\n以 UTF-8 编码
\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 0xA9或11000010 101010010xA9ANSI 编码的byte 。
带扬抑符的拉丁文大写字母 A具有ANSI 编码中的字节0xC2或。11000010
当11000010 10101001遇到 并解释为 UTF-8 时,第一个字节 的前三位110与第二个字节 的前两位组合,10表示双字节 UTF-8 字符 的开始。所以这是版权符号的正确UTF-8编码。
但是,如果11000010 10101001遇到并解释为 ANSI,则会看到两个单独的字符:\xc3\x82 和 \xc2\xa9。
我认为 \xc2\xa9 的 UTF-8 编码的第二个字节与一字节的 ANSI 编码相同并非巧合。看起来Latin-1 补充在 UTF-8 中的插入顺序与 ANSI 中的顺序完全相同,偏移量也相同,使第二个字节相等。例如UTF-8编码
\n\n\n\n\n\xc2\xb5
\n
会显示为
\n\n\n\n\n\xc3\x82\xc2\xb5
\n
如果错误地解释为 ANSI。
\n\n也许,这样做是为了在发生编码错误时保留有关原始字符的一些信息。
\n检查你的 html head 中是否设置了正确的 charset-meta-tag
<meta charSet="UTF-8"/>
Run Code Online (Sandbox Code Playgroud)