Ruby on Rails 5.2邮件主题:如何让'显示为'而非'?
Rails 5.2邮件主题撇号转义问题解决方法
针对邮件主题中撇号被转义为'的问题,你可以尝试以下几种Ruby/Rails方法解决:
使用
CGI.unescapeHTML反转义
如果你的title变量已经被HTML转义(包含'这类实体),可以用这个方法将其还原为原始字符:mail(from: from_email, to: to_email, subject: CGI.unescapeHTML(title) )该方法会把所有HTML实体转换为对应的原生字符,正好解决撇号的转义问题。
直接使用原始未转义字符串
检查title的来源,如果它在之前的流程(比如表单提交、数据库存储)中被不必要地转义了,直接使用原始未转义的字符串即可,无需调用html_safe(因为邮件主题是纯文本,不需要HTML安全处理):mail(from: from_email, to: to_email, subject: title )若
title来自富文本内容,建议先提取纯文本再赋值给主题。统一字符编码格式
若问题源于字符编码异常,可借助Rails的ActiveSupport工具类规范编码:subject: ActiveSupport::Multibyte::Chars.new(title).normalize(:kc)这个方法可以统一字符的编码表示,避免因编码不一致导致的转义问题。
内容的提问来源于stack exchange,提问作者user1550418
相关产品推荐
相关产品推荐

