我有问题,当我使用德语单词和变音符号(例如ä,ü)时,类别不是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 }}">