Jekyll: 解决Win10系统Code Page错误问题

yzhj00 2019-06-28

Windows 版本: 10.0
Ruby 版本: 2.5.1
Gem 版本: 2.7.6
Jekyll 版本: 3.8.3
Bundle 版本: 1.16.2
Powershell 版本: 5.1

Code Page: In computing, a code page is a table of values that describes the character set used for encoding a particular set of characters, usually combined with a number of control characters.

从Wiki的描述来看,Code Page相当于字符编码集合构成的页表。

那么,在Win10系统中安装Jekyll容易出现Code Page的错误,亦即不同的字符集编码不兼容

错误表现:
运行:bundle exec jekyll serve
报错:
Conversion error: JekyllConverters::Scss encountered an error while converting 'assets/css/main.scss':
Invalid GBK character "xE2" on line 54

查看当前系统的Code Page方法有两种:

  1. 打开Powershell,运行chcp,显式Active code page: 65001,即Code Page为65001 (UTF-8),此时Jekyll可以正常运行;
  2. 打开Powershell,右键上部标题栏,左键点击“属性” --> 点击“选项”, 在选项页面查看当前代码页;

若查看到的Code Page为:936 (GBK),则会与Jekyll出现字符集不兼容的问题。

修改当前系统的Code Page方法:

  1. 非长久方法:直接在Powershell中运行chcp 65001,但是退出Powershell之后,将恢复默认的Code Page,故而每次在运行bundle exec jekyll serve命令时候,都需要进行chcp 65001
  2. 长久方法:修改Powershell配置文件。

    • 运行:Get-ExecutionPolicy 获取当前Powershell执行策略等级;
    • 若等级为Restricted或AllSigned,运行Set-ExecutionPolicy RemoteSigned修改策略等级为RemoteSigned
    • 创建Powershell启动加载的脚本。New-Item -Path $Profile -ItemType file -Force
    • 打开创建的脚本文件,将chcp 65001命令写入,然后保存退出文件;
    • 重启Powershell,此后Powershell每次启动即会运行chcp 65001
    • 若不想每次启动Powershell显式"Active code page: 65001",可改写命令为chcp 65001 >$null,将输出丢弃;

以上的解决方案,主要参考setup-jekyll-on-windows

相关推荐

icbm / 0评论 2014-03-08