开发记录 (SASS) - 报错: "Encoding::CompatibilityError: incompatible character encodings: GBK and UTF-8"

在 WebStorm 中,使用 SASS/SCSS 转换插件时,需要使用 File Watchers 功能监听 SASS/SCSS 类型文件;当命令行执行自动转换时,发出报错信息为: Encoding::CompatibilityError: incompatible character encodings: GBK and UTF-8

错误原因是由于文件路径中有中文字符或者代码里有中文注释,又或者又中文字体栈;只要把中文都改成英文可以解决问题,但岂不是因噎废食?

解决的方法:

  1. 找到 Ruby 安装目录,定位到 lib\ruby\gems\2.3.0\gems\sass-3.4.22\lib\sass\engine.rb 文件,在所有的 require 语句的下一行添加 Encoding.default_external = Encoding.find('UTF-8') 即可。

  2. 上个方法无效时,同样在 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 文件夹,就两个都修改,基本就没问题了。