dompdf字符编码UTF-8

29

我正在尝试创建包含正确字符的 PDF 文件,但是出现了“?”字符。 我创建了一个测试 PHP 文件,在其中尝试找到最佳解决方案。如果在浏览器中打开 HTML 文件,则看起来没问题。

UTF-8 --> UTF-8 : X Ponuka číslo € černý Češký 

但是当我查看这个PDF时,我看到了这个。

UTF-8 --> UTF-8 : X Ponuka ?íslo € ?erný ?ešký 

这是我的全部代码:

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>č s š Š</title>
</head>
<body>
<?php 

require_once("dompdf/dompdf_config.inc.php");
$tab = array("UTF-8", "ASCII", "Windows-1250", "ISO-8859-2", "ISO-8859-1", "ISO-8859-6", "CP1256"); 
$chain = '<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <style></style><title>č s š Š</title></head><body>';
foreach ($tab as $i) 
    { 
        foreach ($tab as $j) 
        { 
            $chain .= "<br> $i --> $j : ".iconv($i, $j, 'X Ponuka číslo € černý Češký <br>'); 
        } 
    } 
$chain .= '<p style="font-family: firefly, verdana, sans-serif;">??????X Ponuka číslo € černý Češký <br></p></body></html>';
echo $chain; 
echo 'X Ponuka číslo € černý Češký <br>'; 

$filename = 'pdf/_1.pdf';
$dompdf = new DOMPDF();
$dompdf->load_html($chain, 'UTF-8');
$dompdf->set_paper('a4', 'portrait'); // change these if you need to
$dompdf->render();
file_put_contents($filename, $dompdf->output());

?> 
</body>
</html>

我做错了什么?我尝试了很多我找到的选项 :( 有任何想法吗?


大多数库不允许您加载与您明确告知库要加载的编码不同的数据。这通常会导致出现问号。所以我真的很想知道,为什么你认为使用DOMPDF会有所不同呢?此外,尝试所有选项可能适用于玩耍,但如果这种玩耍不能快速产生任何结果,您需要找到一种不同的策略来理解发生了什么。 - hakre
我做了几个选项,因为很难找到它的工作原理,字符集ISO-8859-2没有任何有用的信息,我谷歌了很多次,我想要UTF-8,每个字符都没问题! - lostika
1
是的,如果您想支持所有(在计算机系统上)已知的字符,则UTF-8是一个不错的选择。然而,在您上面的代码中,您在同一字符串中进行了多次编码。那样永远不会很好地工作。相反,最好找出您的字符串最初具有哪种编码方式。然后使用特定的编码将其转换为UTF-8。您应该只在此处执行单个重新编码。这个答案对您也可能很有趣:https://dev59.com/zW435IYBdhLWcg3w6EqF#5159071 - hakre
11个回答

0

我曾经遇到过同样的问题,但我很简单地解决了它。 只需在生成HTML时使用的CSS文件中导入带有所需语言子集的Google字体。在HTML文件中指定utf-8,就可以正常工作了...

@import url('https://fonts.googleapis.com/css?family=Roboto:400,700&subset=latin-ext');
body {font-family: 'Roboto', sans-serif;}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接