在 WebStorm 中,使用 SASS/SCSS 转换插件时,需要使用 File Watchers 功能监听 SASS/SCSS 类型文件;当命令行执行自动转换时,发出报错信息为: Encoding::CompatibilityError: incompatible character encodings: GBK and UTF-8
。
错误原因是由于文件路径中有中文字符或者代码里有中文注释,又或者又中文字体栈;只要把中文都改成英文可以解决问题,但岂不是因噎废食?
解决的方法:
找到 Ruby 安装目录,定位到
lib\ruby\gems\2.3.0\gems\sass-3.4.22\lib\sass\engine.rb
文件,在所有的require
语句的下一行添加Encoding.default_external = Encoding.find('UTF-8')
即可。上个方法无效时,同样在 Ruby 目录下,定位到
lib/ruby/gems/2.4.0/gems/sass-3.x.x/lib/sass/importers/filesystem.rb
文件,用编辑器打开后,定位到 87 行,将此行修改为if name.encode("utf-8", "gbk").index(@root + "/") == 0
即可。PS:如果有两个 sass-3.x 文件夹,就两个都修改,基本就没问题了。