Jekyll编码类别特殊字符名称

2024-02-06

我的 Jekyll 安装曾经可以工作。自更新以来,我遇到了 URL 包含带有一些特殊字符的标签名称的问题。

现在,当我尝试访问包含特殊字符的 URL 时,会收到一条错误消息,例如http://127.0.0.1:4000/tag/Actualit%C3%A9%20europ%C3%A9enne/, where Actualité européenne是一个类别的名称。

错误信息是incompatible character encodings: UTF-8 and ASCII-8BIT。所有文件在_posts目录都是utf-8。

这是堆栈跟踪:

[2017-01-30 17:39:09] 错误编码::兼容性错误:不兼容 字符编码:UTF-8 和 ASCII-8BIT /usr/lib/ruby/2.1.0/webrick/httpservlet/filehandler.rb:313:in '设置文件名' /usr/lib/ruby/2.1.0/webrick/httpservlet/filehandler.rb:282:in 'exec_handler' /usr/lib/ruby/2.1.0/webrick/httpservlet/filehandler.rb:217:in 'do_GET' /var/lib/gems/2.1.0/gems/jekyll-3.4.0/lib/jekyll/commands/serve/servlet.rb:30:in 'do_GET' /usr/lib/ruby/2.1.0/webrick/httpservlet/abstract.rb:106:in '服务' /usr/lib/ruby/2.1.0/webrick/httpservlet/filehandler.rb:213:in “服务”/usr/lib/ruby/2.1.0/webrick/httpserver.rb:138:在“服务”中 /usr/lib/ruby/2.1.0/webrick/httpserver.rb:94:在“运行”中 /usr/lib/ruby/2.1.0/webrick/server.rb:295:in 'start_thread 中的块'

[2017-01-30 17:41:59] 错误编码::兼容性错误:不兼容 字符编码:UTF-8 和 ASCII-8BIT /usr/lib/ruby/2.1.0/webrick/httpservlet/filehandler.rb:313:in '设置文件名' /usr/lib/ruby/2.1.0/webrick/httpservlet/filehandler.rb:282:in 'exec_handler' /usr/lib/ruby/2.1.0/webrick/httpservlet/filehandler.rb:217:in 'do_GET' /var/lib/gems/2.1.0/gems/jekyll-3.4.0/lib/jekyll/commands/serve/servlet.rb:30:in 'do_GET' /usr/lib/ruby/2.1.0/webrick/httpservlet/abstract.rb:106:in '服务' /usr/lib/ruby/2.1.0/webrick/httpservlet/filehandler.rb:213:in “服务”/usr/lib/ruby/2.1.0/webrick/httpserver.rb:138:在“服务”中 /usr/lib/ruby/2.1.0/webrick/httpserver.rb:94:在“运行”中 /usr/lib/ruby/2.1.0/webrick/server.rb:295:in 'start_thread 中的块'

我已经重命名了所有文件_posts删除其中的特殊字符文件名,但仍然不起作用。我不想重命名标签。


默认情况下,所有页面都编码为“utf-8”。但你可以覆盖它config.yml:

encoding: ENCODING 

但 jekyll 似乎不能很好地工作(直到现在:2017 年 1 月),unicode 没有英文字符,请参阅此类似问题Slugify 字符串似乎不适用于 Unicode/瑞典字母 #4623 https://github.com/jekyll/jekyll/issues/4623。如果你不把类别放在里面,这个空间也会造成一个小问题' '

解决方法是在将“类别”集成到url, 用一个发电机 https://jekyllrb.com/docs/plugins/#generators, with:

slug = category.strip.downcase.gsub(' ', '-').gsub(/[^\w-]/, '') # categories slugiffier  
// use this slug as the category id

上面的 slugifier 只是小写,用 - 替换空格,并删除所有非 ASCII 字母,因此您需要添加其他替换gsub在最后一个之前.gsub(/[^\w-]/, '')取代:

é è ê -> e
à â   -> a
...

Update

在阅读 GitHub 列表中的旧 jekyll 问题以实施“修复”时,我发现了这个详细解决方案 https://github.com/jekyll/jekyll-help/issues/129#issuecomment-61255284由 @david-jacquel 在 2014 年发布:

这需要改变 Jekyll 生成帖子 URL 的方式。这个可以 用插件来完成。

# _plugins/post.rb
module Jekyll

  class Post

    # override post method in order to return categories names as slug
    # instead of strings
    #
    # An url for a post with category "category with space" will be in
    # slugified form : /category-with-space
    # instead of url encoded form : /category%20with%20space
    #
    # @see utils.slugify
    def url_placeholders
      {
          :year        => date.strftime("%Y"),
          :month       => date.strftime("%m"),
          :day         => date.strftime("%d"),
          :title       => slug,
          :i_day       => date.strftime("%-d"),
          :i_month     => date.strftime("%-m"),
          :categories  => (categories || []).map { |c| Utils.slugify(c) }.join('/'),
          :short_month => date.strftime("%b"),
          :short_year  => date.strftime("%y"),
          :y_day       => date.strftime("%j"),
          :output_ext  => output_ext
      }
    end

  end

end

——大卫·雅克尔谈Jekyll/jekyll-help/issues/129# https://github.com/jekyll/jekyll-help/issues/129#issuecomment-61255284

这将解决空间问题,并给出解决编码名称的起点

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jekyll编码类别特殊字符名称 的相关文章

随机推荐

  • 约束现有的 Boost.Spirit real_parser (使用策略)

    我想解析浮点数 但不允许 NaN 值 因此我生成一个继承默认策略的策略并创建一个real parser用它 using boost spirit qi real parser real policies phrase parse doubl
  • 尽管设置了精度,MSSQL 表中的小数仍会四舍五入

    我的 c 对象有一个小数属性 public decimal LastPrice get set 在处理我的对象时 设置了十进制值 例如 LastPrice 0 091354 我修改了 DbContext 以提高小数精度 如另一篇 stack
  • 在 iPhone Objective C 中禁用 UIDatePicker 中的过去日期

    我是 Objective C 和 iPhone 开发的新手 我在 iPhone 应用程序中使用 UIDatePicker 我的要求是允许用户仅从 DatePicker 中选择未来日期 为此 我想仅在 DatePicker 中禁用过去的日期和
  • 相机或图库意图会破坏某些设备上的旧活动

    我正在开发使用 WebView 来显示其内容的应用程序 不过 需要打开相机或图库才能选择图片 Intent cameraIntent new Intent android provider MediaStore ACTION IMAGE C
  • Windows 7 中未加载 PHP 7 FTP 扩展

    我最近在 Windows 7 操作系统 32 位 中安装了 PHP 7 我使用 FTP 库 nicolab php ftp client 来实现 FTP 功能 但出现异常 致命错误 未捕获 FtpClient FtpException FT
  • SBT 未找到 scala 2.10.1 的 scalatest

    我正在尝试学习如何使用 SBT 但我发现以下简单示例无法找到 scalatest 的版本 name DoingItWrong version 0 0 1 scalaVersion 2 10 1 libraryDependencies Seq
  • 如何使用 Code First Entity Framework 4.1 获取完整对象

    我试图以 JSON 形式返回完全深层的对象 填充了所有外键关系 但我得到的所有引用对象均为空值 这是获取对象的调用 public ActionResult GetAll return Json ppEFContext Orders Json
  • 每个时间步更新 ODE 求解器中的初始条件

    我想要求解一个 ODE 系统 在前 30 000 秒内 我希望状态变量之一从相同的初始值开始 30 000 秒之后 我想将该状态变量的初始值更改为不同的值 并在其余时间模拟系统 这是我的代码 def ode rhs y t ydot 0 p
  • 数据库中的动态站点地图不显示节点

    我已经实现了这个https github com maartenba MvcSiteMapProvider wiki Defining sitemap nodes using IDynamicNodeProvider https githu
  • 为什么在本地 k8s 环境中使用 nginx-ingress 控制器和资源时有时需要编辑 /etc/hosts?

    不确定这是否特定于操作系统 但在我的 M1 Mac 上 我正在安装位于官方的 Nginx 控制器和资源示例控制器快速入门指南 https kubernetes github io ingress nginx deploy quick sta
  • jQuery DOM 操作效率 - 使用 JavaScript 构建整个页面

    我将从一个完全空白的页面开始 除了 html head 和 body 之外没有任何元素 然后使用 jQuery 构建页面 页面内容将采用来自 AJAX 请求的 JSON 形式 JSON 中的内容不会有任何 HTML 将根据 JSON 对象的
  • 使用 TypeScript 将箭头函数编译为常规函数

    这是一个非常简单的问题 但我还没有在任何地方找到答案 是否有一些开关可以使 TypeScript 将箭头函数编译为纯 JavaScript 函数 我在代码中经常使用它们 并且不想重写所有内容 但我最近意识到 IE 不支持它们 我已经尝试将脚
  • 创建一个全局类 Objective-c?

    我想在 Objective C 中创建一个具有已存储数据的类 以便访问数据时我不想实例化该类 我该怎么做 您可以使用单例 也可以使用仅由类方法组成并允许您访问静态数据的类 这是 ObjC 中的基本单例实现 interface MySingl
  • 如何修改此脚本以获取参数?

    我有一个结合了电源点的电源 shell 脚本 问题是它仅适用于当前目录 脚本所在的目录 中的电源点并将组合的电源点保存到文档中 如何更改脚本以从作为参数给出的任何目录运行 我像这样运行 power shell 脚本 Merge Presen
  • z 索引无法正常工作

    所以我正在制作一个网站 我有一个带有一些盒子阴影的顶部栏 然后我的正下方有一个描述框 因此 我设置了 z 索引以确保顶部栏 box shadow 会使用以下 css 覆盖描述框 topbar z index 9999 important d
  • 如何在汇编中实现 mod 运算符

    我正在学习汇编语言中的除法 根据我正在学习的书 idiv运算的结果放在eax中 余数放在edx中 书中的一个练习是实现number result divisor在装配中 我本以为这相当于正常的除法运算 除了 edx 是结果 然而这并没有起作
  • jQuery UI 可排序 - 对图像进行排序

    我刚刚为一组图像实现了 jQuery UI 可排序插件 我的标记如下 ul class ui sortable li img src images member 4698568 7884029 t jpg alt li li img src
  • WebBrowser 控件不会从 C# 打印

    我在 WinForms 应用程序上有一个 WebBrowser 控件 它正在加载转换为 HTML CSS 的 XML 如果我只想在那里或在常规浏览器中查看它 看起来很漂亮 当表单加载时 它应该导航到该文件 然后当 OnDocumentCom
  • 如何使用ssr在nuxt中添加ckeditor插件

    我正在尝试在我的通用 nuxt 应用程序中添加 ckeditor 5 的对齐插件 SSR 我在插件中尝试过这样 import Vue from vue import ClassicEditor from ckeditor ckeditor5
  • Jekyll编码类别特殊字符名称

    我的 Jekyll 安装曾经可以工作 自更新以来 我遇到了 URL 包含带有一些特殊字符的标签名称的问题 现在 当我尝试访问包含特殊字符的 URL 时 会收到一条错误消息 例如http 127 0 0 1 4000 tag Actualit