fpdf 中导出的错误符号... ñ 为 ñ ..?

Posted

技术标签:

【中文标题】fpdf 中导出的错误符号... ñ 为 ñ ..?【英文标题】:wrong symbol exported in fpdf... ñ as ñ ..? 【发布时间】:2011-06-06 00:46:01 【问题描述】:

我不知道是什么问题,但是每当我从 $_POST 函数中调用字母 ñ 时,它会将它作为 ñ .. 放入我的 fpdf 中。知道为什么吗?

【问题讨论】:

这是一个字符集问题。您需要添加更多细节:您的数据来自哪里(数据库?表单?),它是如何编码的 数据库形式.. 但人们写 ñ 并最终以 fpdf 作为那些符号.. 在 mysql 数据库中,它看起来像我想要的那样 【参考方案1】:

您的字符串编码错误。它是 UTF-8,但我认为您需要 Latin-1 左右..

您可以在字符串上使用 utf8_decode():

echo utf8_decode("ñ"); // prints ñ

【讨论】:

嘿,谢谢!我会回应吗? .. 像下面一样,之后呢? 在将字符串写入 PDF 之前,您必须使用它:$your_string = utf8_decode($your_string);。其实直接看完$_POST:$your_string = utf8_decode($_POST['your_string']); 这是我的帖子:$pdf->Write(0, "".$person["CA"]);我应该这样做: $pdf->Write $your_string = utf8_decode(0, "".$person["CA"]); ????【参考方案2】:

另一种解决方案是使用 Unicode (UTF-8) 支持扩展 FPDF。有一个补丁:http://acko.net/node/56

【讨论】:

谢谢回复!! ..我如何安装它? @NORM:真的:我不知道。但是从我收集的信息来看,您只需使用它来代替普通的 FPDF。更改包含,并实例化 new UFPDF() 类。 @Edson:互联网档案馆:web.archive.org/web/20110411183526/http://acko.net/node/56【参考方案3】:

我也花了相当多的时间试图让它发挥作用,并认为以下解释可能对其他人有所帮助。

如果唯一的问题是£/€ 或类似字符,则无需编写自己的复杂函数。

这是我用过的(取自这个帖子和网络上的其他人):-

$pdf->SetY(220); // set the y co-ord before output //
$monthlyRent = utf8_decode("£" . number_format($monthlyRent, 2)); // 2 dec places //
// previously $monthlyRent is pulled from the MySql db as $array['_monthlyRent'];
$pdf->Write(5,'Gross monthly rent: ' . $monthlyRent); // outputs £980 or whatever. //

工作愉快,但记得在utf8_decode(); 的同一行中做number_format($yourval, 2) 否则它搞砸了!

希望这对一些像我一样挣扎了几个小时的可怜草皮有帮助!

【讨论】:

【参考方案4】:

我们曾经遇到过问题并正在使用

utf8_decode("foo bar");

解决了问题(当然取决于数据是否来自用户、数据库……)。不要忘记在标头中以 UTF-8 格式将文件传递给用户

header("Content-type: application/pdf; charset=utf-8");

【讨论】:

以上是关于fpdf 中导出的错误符号... ñ 为 ñ ..?的主要内容,如果未能解决你的问题,请参考以下文章

通过 AJAX 发布时字符编码错误

未找到模块:错误:包路径。不是从包中导出的

PHP:删除重音符号

如何将 Unicode 字符输出为一对 ASCII 字符?

FPDF 错误:一些数据已经输出,无法发送 PDF

从字符串中删除重音符号