字符编码,我该如何区分呢?

时间:2014-05-12 22:34:27

标签: ruby-on-rails postgresql unicode encoding utf-8

来自我的数据库的字符编码方式与直接在源代码中编写的相同字符的编码方式不同。例如,当字符串直接写入HTML时,单词Permissões显示的结果与从db记录输出字符串时的结果不同。

# From the source
Addressable::URI.encode("Permissões.pdf") #=> "Permiss%C3%B5es.pdf"

# From the db
Addressable::URI.encode("Permissões.pdf") #=> "Permisso%CC%83es.pdf"

编码不同。但my database is set to UTF-8,我正在使用HTML5。可能导致这种情况的原因是什么?

enter image description here

由于此问题,我无法下载上传到S3的文件。我试图强制编码attachment.path.encode("UTF-8"),但这没有任何差异。

1 个答案:

答案 0 :(得分:0)

要解决这个问题,因为我使用的是Rails,所以我使用ActiveSupport::Multibyte::Unicode来规范化任何unicode字符,然后再插入数据库。

before_save do
  self.path = ActiveSupport::Multibyte::Unicode.normalize(path)
end