jekyll 使用中文路径

出现问题

在使用 jekyll 在本地预览自己写的博客无法正常打开,而提交到 github 上却可以正常解析。

看了一下,发现原来是因为博客的 markdown 文件使用了中文文件名,jekyll 无法正常解析出现乱码。

解决方法

修改 安装目录 Ruby26-x64\lib\ruby\2.6.0\webrick\httpservlet 下的 filehandler.rb 文件,建议先备份。

找到下列两处,添加一句(+ 的一行为添加部分)

第 285 行:

path = req.path_info.dup.force_encoding(Encoding.find("filesystem"))
+ path.force_encoding("UTF-8") # 加入编码
if trailing_pathsep?(req.path_info)       

第 333 行:

break if base == "/"
+ base.force_encoding("UTF-8") #加入編碼
break unless File.directory?(File.expand_path(res.filename + base))  

修改完重新 jekyll serve 即可支持中文文件名。