【问题标题】:Encoding filename for Nginx CacheNginx 缓存的编码文件名
【发布时间】:2011-12-16 08:58:24
【问题描述】:

我有这样的UTF-8 网址请求:

http://www.example.com:8080/pk/s/151x120/%D8%A2%D9%88%D8%A7%D8%B2-%DA%A9.jpg

我将结果存储在一个文件名中:

%D8%A2%D9%88%D8%A7%D8%B2-%DA%A9.jpg

但 nginx 似乎没有看到缓存并重做相同的请求。我发现 nginx 确实加载了这种UTF-8 文件名:

\341\203\250\341\203.jpg

但是,我不记得编码的名称或生成这样文件名的 ruby​​ 方法... :(

使用:Rails 3.1.3、Ruby 1.9.2、Nginx 和 FreeBSD

【问题讨论】:

  • 没有人知道结尾的名字吗? :(
  • 我不知道那个编码类型,但它看起来像一个字节数组:"%D8%A2%D9%88%D8%A7%D8%B2-%DA%A9".unpack("U*")
  • 你总是可以对文件名进行base64编码,这样你就有了字母数字文件名。

标签: ruby-on-rails ruby encoding nginx freebsd


【解决方案1】:

您是否只想取消转义 Percent-encoding

irb(main):001:0> require 'uri'
=> true
irb(main):002:0> URI.unescape "http://www.example.com:8080/pk/s/151x120/%D8%A2%D9%88%D8%A7%D8%B2-%DA%A9.jpg"
=> "http://www.example.com:8080/pk/s/151x120/\330\242\331\210\330\247\330\262-\332\251.jpg"

【讨论】:

    猜你喜欢
    • 2017-08-30
    • 2016-09-23
    • 1970-01-01
    • 2016-08-01
    • 2011-09-06
    • 2015-06-10
    • 2014-11-29
    • 2020-08-06
    • 2014-01-10
    相关资源
    最近更新 更多