【问题标题】:Bosnian characters in FPDFFPDF 中的波斯尼亚字符
【发布时间】:2018-07-23 09:12:52
【问题描述】:

我有一个波斯尼亚字符串 $string = "Saglasno odredbama čl.19 Zakona o udruženjima i Statuta Udruženja računovođa i knjigovođa Srbije URIKS iz Beograda, ul."

我使用了 fpdf http://www.fpdf.org/ 的“Write”功能,但所有“č”字符都变成了“è”

$pdf->Write (6, iconv('UTF-8', 'CP1250//TRANSLIT', "Saglasno odredbama čl.19 Zakona o udruženjima i Statuta Udruženja računovođa i knjigovođa Srbije URIKS iz Beograda, ul."));

我该如何解决?非常感谢!

【问题讨论】:

  • 是只在调用Write()方法还是echo字符串时才改变字符?
  • 你的意思是回声?这是 fpdf。
  • 如果你这样做:iconv('UTF-8', 'CP1250//TRANSLIT', "Saglasno odredbama čl.19 Zakona o udruženjima i Statuta Udruženja računovođa i knjigovođa Srbije URIKS iz Beograda, ul.") 你得到正确还是错误的字符?
  • 我的字符有误。
  • 如果你回显没有iconv() 函数,你得到正确的字符吗?也可以尝试不带iconv()Write() 函数。

标签: php fpdf


【解决方案1】:

这样的事情应该可以工作:

require_once 'fpdf181\fpdf.php';
require_once 'fpdf181\makefont\makefont.php';

MakeFont('C:\\Windows\\Fonts\\arial.ttf','cp1252');

$pdf = new FPDF();
$pdf->AddFont('Arial','','Arial.php');
$pdf->AddPage();
$pdf->SetFont('Arial','',16);
$pdf->Write(6,'Saglasno odredbama čl.19 Zakona o udruženjima i Statuta Udruženja računovođa i knjigovođa Srbije URIKS iz Beograda, ul.');
$pdf->Output();

尝试将编码更改为cp1250ISO-8859-2

来源:http://www.fpdf.org/en/tutorial/tuto7.htm

如果这一切都失败了,那么尝试使用 UTF-8:http://www.fpdf.org/en/script/script92.php

【讨论】:

  • @MetrobuyVietNam iconv 将字符串转换为正确的编码。但随后Write() 方法再次将其转换为另一种编码。您需要在Write() 方法/函数中使用正确的编码。
【解决方案2】:

我个人不会在我的 PDF 中使用 UTF-8,因为文件大小对我来说很大。在这种情况下,我使用字体嵌入来避免文件过大。

如果您拥有具有所需字符集的 TrueType 或 Type1 字体,FPDF 类可以生成除西欧语言以外的多种语言的文档:中欧语、西里尔语、希腊语、波罗的海语和泰语。还提供 UTF-8 支持。

对于 UTF-8 支持,您必须使用基于 FPDF 的 tFPDF。 tFPDF 接受 UTF-8 编码的文本。请read all this instructions然后从本站下载底部的ZIP file

转换为 UTF-8:

如果您使用上述说明(来自链接)并从如下文件加载 UTF-8 字符串,则不需要转换为 UTF-8:

// this file file must be saved in UTF-8 before:
$str = file_get_contents('Text-saved-in-UTF-8.txt');

其他情况:

您必须使用 mb_convert_encoding 而不是 iconv。对于波斯尼亚语(拉丁语),这是'iso-8859-2'

在你的情况下:

$mystring = "Saglasno odredbama čl.19 Zakona o udruženjima i Statuta Udruženja računovođa i knjigovođa Srbije URIKS iz Beograda, ul.";

你必须写:

$str = mb_convert_encoding($mystring, 'UTF-8', 'iso-8859-2');

您的 PHP 文件必须在 iso-8859-2 之前保存(但 不是 UTF-8)。

然后你在 tFPDF 中使用它。


我的相关回答:Serbian characters in FPDF

【讨论】:

  • 谢谢,我将 cp1250 转换为字体并与fpdf.org/makefont一起使用
  • 非常感谢,但我不使用你的方式。
猜你喜欢
  • 2012-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-01
  • 2013-11-24
  • 2011-10-19
  • 1970-01-01
相关资源
最近更新 更多