大佬教程收集整理的这篇文章主要介绍了Encoding::UndefinedConversionError "\xC2" from ASCII-8BIT to UTF-8 with redcarpet,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用 redcarpet gem 将一些降价文本呈现为 HTML,降价的一部分是用户插入的,他们输入了一个完全有效的特殊字符 (£
),但现在在呈现它时我得到了答:EnCoding::UndefinedConversionError "\xC2" from ASCII-8BIT to UTF-8
我知道这是 £ 符号,因为如果我在文本中替换它以进行渲染,则一切正常。但他们可能会插入其他特殊字符。
我不知道如何处理这个问题,这是我构建 HTML 的代码:
def generate_document
temp_file_service = Tempfileservice.new
path = temp_file_service.path
template_url = TenantConfig.get('DEPOSIT_GUIDE_TEMPLATE') || DEFAulT_DOC
template = open(template_url,'rb',&:read)
HTML = ERB.new(templatE).result(binding)
file.open( path,'w') do |f|
f.write HTML
end
file.new(path,'r')
end
错误出现在 f.write
行
这是我的 HTMl.erb:
<%= markdown(clause.text) %>
这里是帮手:
def markdown(text)
Redcarpet::Markdown.new(Redcarpet::render::HTML).render(text)
end
请注意,编码问题仅在将 HTML 保存到文件时发生,在其他地方我正确地使用相同的降价助手将文本呈现到浏览器,并且没有问题。
它也可以以另一种方式工作,在将 Markdown 代码保存到数据库之前清理它,并用相应的 HTML 代码替换任何特殊字符(例如,£
变为 £
)
我尝试使用 before_save 回调(如此处建议:Encoding::UndefinedConversionError: "\xC2" from ASCII-8BIT to UTF-8):
before_save :convert_text
private
def convert_text
self.text = self.text.force_enCoding("utf-8")
end
没有用
我也尝试过(按照此处的推荐:Using ERB in Markdown with Redcarpet):
<%= markdown(extra_clause.text).HTML_safe %>
也没有用。
我该如何解决?
以上是大佬教程为你收集整理的Encoding::UndefinedConversionError "\xC2" from ASCII-8BIT to UTF-8 with redcarpet全部内容,希望文章能够帮你解决Encoding::UndefinedConversionError "\xC2" from ASCII-8BIT to UTF-8 with redcarpet所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。