如何让Cloudinary的raw资源链接以UTF-8格式显示原始内容
解决方案
问题根因
Cloudinary 上传
.txt格式的 raw 类型资源时,默认返回的Content-Type响应头为text/plain,未携带charset=utf-8声明,浏览器会按照自身默认编码解析文件内容,非ASCII字符就会出现编码错误。
修复方案
方案1:上传时指定响应头(推荐)
上传时新增 content_type 参数显式声明编码,修改后代码如下:
File.open("content.txt", 'w:UTF-8') { |file| file.write(@items_string) } @cloudfile = Cloudinary::Uploader.upload( "content.txt", use_filename: true, unique_filename: true, resource_type: 'raw', # 新增以下配置,指定返回时的MIME类型带UTF-8编码 content_type: 'text/plain; charset=utf-8' )
配置后上传的文件,访问时Cloudinary会自动返回带正确编码声明的响应头,浏览器会直接用UTF-8解析内容。
方案2:存量文件临时修复
如果不想重新上传已经上传完成的文件,直接在资源访问链接末尾追加 ?f=txt 参数即可,Cloudinary会自动调整响应头的编码配置,示例如下:https://res.cloudinary.com/hozgi1gq4/raw/upload/v1635939227/838588_ex5mb0.txt?f=txt
内容的提问来源于stack exchange,提问作者Max Bugaenko
相关产品推荐
相关产品推荐

