【发布时间】:2013-08-06 09:58:37
【问题描述】:
我的参数中有一个奇怪的行为,它作为 utf-8 传递,但特殊字符没有得到很好的管理。 我有 2 个字符,而不是 1 个特殊字符:普通字母 + 重音。
Parameters: {"name"=>"Mylène.png", "_cardbiz_session"=>"be1d5b7a2f27c7c4979ac4c16fe8fc82", "authenticity_token"=>"9vmJ02DjgKYCpoBNUcWwUlpxDXA8ddcoALHXyT6wrnM=", "asset"=>{"file"=># < ActionDispatch::Http::UploadedFile:0x007f94d38d37d0 @original_filename="Mylène.png", @content_type="image/png", @headers="Content-Disposition: form-data; name=\"asset[file]\"; filename=\"Myle\xCC\x80ne.png\"\r\nContent-Type: image/png\r\n", @tempfile=# < File:/var/folders/q5/yvy_v9bn5wl_s5ccy_35qsmw0000gn/T/RackMultipart20130805-51100-1eh07dp > >}, "id"=>"copie-de-sm"}
我记录了这个:
- logger.debug 文件名
- logger.debug file_name.chars.map(&:to_s).inspect
每次都是一样的结果:
- 米莱娜
- [“M”、“y”、“l”、“e”、“̀”、“n”、“e”]
当我尝试将文件名用作匹配器时,已经存在的名称已正确编码为 utf-8,您会看到我的问题 ;)
- 编码到处都是 utf-8。
- 在 ruby 1.9.3 和 rails 3.2.14 下工作。
- 在所有相关文件的顶部添加了#encoding: utf-8。
我的任何一个想法,接受它!
我还在这里发布了一个问题:https://github.com/carrierwaveuploader/carrierwave/issues/1185,但不确定是载波问题还是我遗漏了什么......
【问题讨论】:
-
听起来Unicode equivalence 有问题你尝试过Unicode 规范化吗?
标签: ruby-on-rails ruby encoding special-characters carrierwave