0

我在记事本++中进行了一堆搜索替换操作,以有效地缩小我的css——主要是删除空格/制表符等......)这最终破坏了我的大部分css。

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

我可以通过在 ANSI 编码中进行搜索替换来删除这些,但我的问题是,这个字符是什么,为什么它会出现?

4

2 回答 2

2

当字符串“​”被误解为 windows-1252 编码数据时,它是 ZWSP 的 UTF-8 编码形式。(使用一个不错的UTF-8 解码器对此进行了检查。)这解释了为什么您在 UTF-8 模式下的 Notepad++ 中看不到它;ZWSP(零宽度空格)是没有宽度的不可见字符。

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

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

我不知道有什么简单的方法可以让 Notepad++ 插入 ZWSP(你当然可以在系统中使用通用的字符插入实用程序),所以它的来源有点神秘。也许通过从某个地方复制和粘贴。

于 2012-06-12T18:51:57.377 回答
1

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

在 Visual Studio 中,我只能看到:

}
.t

Web 开发人员显示了一个不需要的隐藏字符,一个顶部带有插入符号的“a”:

}
â.t

上面的 utf 编码器链接揭示了这一点

} (the encoded character for ampersand)
.t   

还有这个

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

于 2012-06-25T15:03:22.133 回答