我的参数中有一个奇怪的行为,它作为 utf-8 传递,但特殊字符没有得到很好的管理。而不是 1 个特殊字符,我有 2 个字符:普通字母 + 重音。
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 但不确定它是载波问题还是我遗漏了什么......