转换带有 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)中确实解决了这个问题之前,我进行了全面搜索。根据一个人的需要,那里有许多潜在的解决方案。那里引用的选项是:
使用PHP的utf8_decode() function
$str = utf8_decode($str);
使用PHP的iconv() function
$str = iconv('UTF-8', 'windows-1252', $str);
需要字符"outside windows-1252"的人被引导至a tutorial on adding new fonts and encodings, or tFPDF
我有一个 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)中确实解决了这个问题之前,我进行了全面搜索。根据一个人的需要,那里有许多潜在的解决方案。那里引用的选项是:
使用PHP的utf8_decode() function
$str = utf8_decode($str);
使用PHP的iconv() function
$str = iconv('UTF-8', 'windows-1252', $str);
需要字符"outside windows-1252"的人被引导至a tutorial on adding new fonts and encodings, or tFPDF