我有一个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,其中只有一些松散了特殊字符。你知道怎么做吗?我应该使用其他方法吗?
答案 0 :(得分:1)
我也遇到了FPDF这样的问题。我发现这个问题实际上是在FPDF FAQ(问题/答案3撰写时)中解决的。根据一个人的需要,有许多潜在的解决方案。引用的选项包括:
使用PHP的utf8_decode() function
$str = utf8_decode($str);
使用PHP的iconv() function
$str = iconv('UTF-8', 'windows-1252', $str);
需要“在windows-1252之外”使用字符的人会被定向到a tutorial on adding new fonts and encodings或tFPDF
答案 1 :(得分:0)
好吧,我找到了答案。我需要改变这个:
html_entity_decode($text)
对此:
html_entity_decode($label, ENT_COMPAT, 'ISO-8859-1')
这样我的所有stringd都被解码了。