我在记事本++中进行了一堆搜索替换操作,以有效地缩小我的css——主要是删除空格/制表符等......)这最终破坏了我的大部分css。
显然,到处都插入了一个奇怪的字符(​))在没有BOM的UTF-8中使用notepad ++,我看不到这些,但它们出现在视图源中。
我可以通过在 ANSI 编码中进行搜索替换来删除这些,但我的问题是,这个字符是什么,为什么它会出现?
我在记事本++中进行了一堆搜索替换操作,以有效地缩小我的css——主要是删除空格/制表符等......)这最终破坏了我的大部分css。
显然,到处都插入了一个奇怪的字符(​))在没有BOM的UTF-8中使用notepad ++,我看不到这些,但它们出现在视图源中。
我可以通过在 ANSI 编码中进行搜索替换来删除这些,但我的问题是,这个字符是什么,为什么它会出现?
当字符串“​”被误解为 windows-1252 编码数据时,它是 ZWSP 的 UTF-8 编码形式。(使用一个不错的UTF-8 解码器对此进行了检查。)这解释了为什么您在 UTF-8 模式下的 Notepad++ 中看不到它;ZWSP(零宽度空格)是没有宽度的不可见字符。
显然浏览器将样式表解释为 windows-1252 编码。使用BOM保存文件可能会有所帮助,因为这样浏览器可能会更好地猜测编码。真正的解决方法是确保(以依赖于服务器的方式)服务器为 CSS 文件发送适当的 Content-Type 标头。
但是,如果这是您的 CSS 文件中唯一的非 Ascii 字符,那么在您删除了有问题的数据之后,这实际上并不重要。
我不知道有什么简单的方法可以让 Notepad++ 插入 ZWSP(你当然可以在系统中使用通用的字符插入实用程序),所以它的来源有点神秘。也许通过从某个地方复制和粘贴。
在 Firefox 中使用 Web 开发者插件或 ext,您可以在 css 文档中看到问题字符。
在 Visual Studio 中,我只能看到:
}
.t
Web 开发人员显示了一个不需要的隐藏字符,一个顶部带有插入符号的“a”:
}
â.t
上面的 utf 编码器链接揭示了这一点
} (the encoded character for ampersand)
.t
还有这个
但只需通过删除和重新输入来解决问题。