加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 如何在jekyll液体中进行url编码?

发布时间:2020-12-16 23:12:15 所属栏目:百科 来源:网络整理
导读:我有问题,当我使用德语单词和变音符号(例如?,ü)时,类别不是url编码的.我尝试了Liquid似乎提供的cgi_escape,但是使用以下代码成功: strongKategorien/strongbr/{% for category in site.categories do %} smalla href="/categories/{{ category[0] | cgi_es
我有问题,当我使用德语单词和变音符号(例如?,ü)时,类别不是url编码的.我尝试了Liquid似乎提供的cgi_escape,但是使用以下代码成功:
<strong>Kategorien</strong><br/>
{% for category in site.categories  do %}
  <small><a href="/categories/{{ category[0] | cgi_escape }}">{{ category[0] }} </a><br/>
         </small>    
{% endfor %}

有人可以帮忙吗?

解决方法

对于带空格的类别,使用cgi_escape无法正常工作.链接生成为/ category / category而不是/ category / category.

我最终使用的解决方案来自this blog post:

# _plugins/url_encode.rb
require 'liquid'
require 'uri'

# Percent encoding for URI conforming to RFC 3986.
# Ref: http://tools.ietf.org/html/rfc3986#page-12
module URLEncoding
  def url_encode(url)
    return URI.escape(url,Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
  end
end

Liquid::Template.register_filter(URLEncoding)

加号是一个文字加上任何地方,但在URL的查询部分,它代表一个空格. Good URL encoding reference(archive.org mirror).

然后可以在布局或其他任何地方使用它:

<a href="{{ site.category_dir }}/{{ category | url_encode }}">

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读