转换带有 html_entity_decode 的特殊字符不起作用

converting special characters with html_entity_decode not working

我有一个 php 网站,我可以在该网站上将一些数据导出到 pdf 文件中。该网站使用 fpdf 创建 pdf 文件,但一些特殊字符在创建的 pdf 文件中没有正确显示。

棘手的是,一些特殊字符可以正确打印,而另一些则不能。该站点的 default_charset 为 "iso-8859-1",php 文件编码为 "ANSI"。我还打印了包含信息(从数据库中获取)的数组,没问题。所以,我想这与 fpdf 有关?但奇怪的是,同一个特殊字符,有些地方打印正确,有些地方打印错误。

谢谢:)

编辑:

我发现在这段代码中字符串编码错误:

foreach ($this->relatorioData['Roteiro'] as $label => $value) {
            $this->Cell(55, 4, html_entity_decode($label), 0, 0, 'L', false);
            $this->Cell(95, 4, html_entity_decode($value), 0, 1, 'L', false);
        }

字符串在 html_entity_decode 之前是正确的,其中只有一些字符串丢失了特殊字符。你知道什么可以做到这一点吗?我应该使用其他方法吗?

好吧,我找到了答案。我需要改变这个:

html_entity_decode($text)

为此:

html_entity_decode($label, ENT_COMPAT, 'ISO-8859-1')

这样我所有的字符串都被正确解码了。

我也 运行 遇到过 FPDF 这样的问题。在发现 FPDF FAQ(撰写本文时 question/answer 3)中确实解决了这个问题之前,我进行了全面搜索。根据一个人的需要,那里有许多潜在的解决方案。那里引用的选项是: