特殊字符添加到css(â€<)这是从哪里来的?

时间:2012-06-12 17:24:27

标签: css utf-8 character-encoding notepad++ replace

我在notepad ++中做了一堆搜索替换操作,以有效地缩小我的CSS - 大多数删除空格/标签等...)这最终打破了我的大部分CSS。

显然在整个地方都插入了一个奇怪的字符(â€<)。在没有BOM的UTF-8中使用notepad ++,我看不到这些,但它们出现在一个视图源中。

我能够通过ANSI编码中的搜索替换来删除这些,但我的问题是,这个角色是什么,为什么它会出现?

2 个答案:

答案 0 :(得分:2)

字符串“ - ”是ZWSP的UTF-8编码形式,当被误解为windows-1252编码数据时。 (使用漂亮的UTF-8 decoder检查了这一点。)这解释了为什么在UTF-8模式的Notepad ++中没有看到它。 ZWSP(零宽度空间)是一个没有宽度的不可见字符。

显然,浏览器将样式表解释为windows-1252编码。使用 BOM保存文件可能有所帮助,因为那时浏览器可能会更好地猜测编码。真正的解决方法是确保(以服务器相关的方式)服务器为CSS文件发送适当的Content-Type标头。

但如果这是CSS文件中唯一的非Ascii字符,那么在删除有问题的数据后,实际上并不重要。

我不知道有什么简单的方法可以让Notepad ++插入ZWSP(你当然可以在系统中使用通用的字符插入实用工具),所以它来自于它有点神秘。也许是从某处复制粘贴。

答案 1 :(得分:0)

在Firefox中使用Web开发人员插件或ext可以看到css文档中的问题字符。

在Visual Studio中我只能看到:

}
.t

Web开发人员展示了一个不需要的隐藏角色,一个带有插入符号的“a”:

}
â.t

上面的utf编码器链接显示了这个

} (the encoded character for ampersand)
.t   

和这个

但只需通过删除和重新输入来解决问题。