【问题标题】:Elixir: getting gibberish for single and double quotes when using Earmark to render markdown in Windows 10Elixir:在 Windows 10 中使用 Earmark 呈现 Markdown 时,单引号和双引号会出现乱码
【发布时间】:2017-05-15 14:26:23
【问题描述】:

我在 Windows 10 上使用 Earmark(一个用于渲染 Markdown 的 Elixir 库)时遇到了一个问题。每当文本包含单引号或双引号时,渲染的标记在控制台或渲染的 html 文件中显示为乱码.

没有意义的是我可以使用单引号和双引号,并且它们可以在控制台上正确呈现。一旦 Earmark 处理文本,它只会变得乱码。

【问题讨论】:

    标签: windows encoding utf-8 elixir markdown


    【解决方案1】:

    在 Elixir 社区的一些人的帮助下,我找到了解决问题的两种方法。

    问题源于 Elixir 默认使用 utf-8 作为字符串的基本编码。这本身不是问题。这成为一个问题,因为 Windows 的控制台子系统对 utf-8 的处理很差。

    Earmark 使用smartypants 将单引号和双引号转换为卷曲的单引号和双引号。这就是 Windows 控制台混淆并打印乱码的地方。

    解决方案:

    1. 用于 html 渲染

    这里最好的解决方案是在模板中为最终的html页面添加utf-8编码。

    <meta charset="utf-8" /> 
    

    如果你不关心智能引号,那么你也可以调用 Earmark 并将 smartypants 选项设置为 false 以避免使用它

    Earmark.as_html(markdown, %Earmark.Options{smartypants: false}) 
    
    1. 对于控制台

    这里需要将控制台字体设置为Lucida,然后运行下面的命令,根据this question on stackoverflow

    chcp 65001
    

    我用过它,它在我的 Windows 10 机器上运行。

    注意:感谢 Iinspectable 更正关于 Windows 和 utf-8 的声明:)

    【讨论】:

    • 感谢 DC Elixir 社区,他们帮助我找到了解决方案 :)
    • “Windows 对 utf-8 的处理很差” - 这是不正确的。 Windows 对 UTF-8 完全没有问题。实际上只有控制台子系统不能很好地处理 UTF-8(或一般的 Unicode,就此而言)。
    • 感谢指正。然后让我更新文本:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2017-12-07
    相关资源
    最近更新 更多