程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Encoding::UndefinedConversionError "\xC2" from ASCII-8BIT to UTF-8 with redcarpet大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Encoding::UndefinedConversionError "\xC2" from ASCII-8BIT to UTF-8 with redcarpet?

开发过程中遇到Encoding::UndefinedConversionError "\xC2" from ASCII-8BIT to UTF-8 with redcarpet的问题如何解决?下面主要结合日常开发的经验,给出你关于Encoding::UndefinedConversionError "\xC2" from ASCII-8BIT to UTF-8 with redcarpet的解决方法建议,希望对你解决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 代码替换任何特殊字符(例如,£ 变为 &#xA3;

我尝试使用 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 %>

也没有用。

我该如何解决?

解决方法

最后我通过在 html 中添加 force_encoding("UFT-8") 解决了这个问题

像这样:

      f.write html.force_encoding("UTF-8")

它修复了它。

大佬总结

以上是大佬教程为你收集整理的Encoding::UndefinedConversionError "\xC2" from ASCII-8BIT to UTF-8 with redcarpet全部内容,希望文章能够帮你解决Encoding::UndefinedConversionError "\xC2" from ASCII-8BIT to UTF-8 with redcarpet所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。