【问题标题】:dompdf special character showing question mark?dompdf特殊字符显示问号?
【发布时间】:2016-12-07 17:11:41
【问题描述】:

我使用 dompdf 0.5.1 来生成 PDF 文件。但是特殊字符没有正确显示。

例如,

它在生成的 PDF 文件中显示类似 – “ 的内容。

我使用 UTF-8 编码,例如 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 在由 dompdf 呈现的 HTML 页面中。

在将其发送到 dompdf 之前,我也使用过编码,例如 $dompdf->load_html(utf8_decode($html));.

但我得到? 标记而不是上述字符。

如何解决上述问题?

【问题讨论】:

    标签: encoding utf-8 character-encoding dompdf


    【解决方案1】:

    Dompdf 0.5.1 对 Windows ANSI 编码不支持的字符的支持有限。如果您需要支持这些字符,您至少应该更新到Dompdf 0.6.2。如果可以的话,我建议使用Dompdf 0.7.0

    您需要提供支持您的字符的字体(请参阅Unicode How-To),但只要您不尝试渲染 CJK 字符,您可能可以依赖包含的 DejaVu 字体。

    <!DOCTYPE html>
    <html>
    <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
      <style>
        * { font-family: DejaVu Sans, sans-serif; }
      </style>
    </head>
    <body>
      <p>—</p>
    </body>
    </html>
    

    此外,您应该永远使用utf8_decode(),因为它会破坏性地转换为iso-8859-1 编码。破坏性是指它会更改无法直接转换为问号 (?) 中的 iso-8859-1 的字符。

    【讨论】:

    • 我将它更新为 Dompdf 0.6.2.. 它工作正常。谢谢@BrianS。
    • 我安装了 Dompdf 0.8.2,起初它输出ʼn,相当于英文的a,变成?。我当然忘记了 laravel {{ }} 转义字符,所以我将其更改为 {!! !!} 解决了一些 ʼn 字符的问题。我从收到的 pdf 文件中复制了文本以插入到网站上,该网站具有无法转换的 ʼn 字符的编码。解决方案当然是将ʼn 字符转换为两个字符,即撇号+ 字母n,即'n
    猜你喜欢
    • 1970-01-01
    • 2013-11-21
    • 2011-07-05
    • 1970-01-01
    • 1970-01-01
    • 2019-01-17
    • 2019-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多