转换特殊字符时html_entity_decode不起作用

时间:2016-02-21 01:50:34

标签: php character-encoding decode fpdf decoder

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

Example of the error

棘手的是,某些特殊字符的打印正确,而其他特殊字符则没有。该站点的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,其中只有一些松散了特殊字符。你知道怎么做吗?我应该使用其他方法吗?

2 个答案:

答案 0 :(得分:1)

我也遇到了FPDF这样的问题。我发现这个问题实际上是在FPDF FAQ(问题/答案3撰写时)中解决的。根据一个人的需要,有许多潜在的解决方案。引用的选项包括:

答案 1 :(得分:0)

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

html_entity_decode($text)

对此:

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

这样我的所有stringd都被解码了。