我正在尝试创建一个包含扩展的ASCII字符的文档。对于来自客户的文本,以下工作:
// Convert from UTF-8 to ISO-8859-1 - Deal with Spanish characters
setlocale(LC_ALL, 'en_US.UTF-8');
foreach ($_POST as $key => $value){
$post[$key] = iconv("UTF-8", "ISO-8859-1", $value);
}
$pdf->Cell(0, 0, $post["Name"], 0, 1);
但是,我无法让PHP文件中的文本工作。例如:
$name = "José";
我不知道变量使用什么编码。因此,我无法将其转换为ISO-8859-1。被弄坏了。
编辑:
我正在重写一个生成PDF文档的程序(有些是西班牙语)。如果我从现有的PDF中复制文本,我会得到以下信息:(在PDF文档和IDE中,这看起来很正常,但不能使用CP1252或ISO-8859-1字体使用fpdf打印)。
$Name = "José" // Jos\x65\xcc\x81 - I have no idea what encoding is used for the é
将扩展字符更改为UTF-8可解决以下问题:
$Name = "José" // Jos\xC3\xA9 - UTF-8
-
有人知道我正在从现有的PDF复制哪种编码吗?
-
有没有办法把它转换成UTF-8?
-
用户可以在浏览器中输入这些内容吗?
当我将UTF-8编码字符转换为ISO-8859-1以输出到fpdf时,pdf包含了_)的三字符编码版本。
第二次编辑:
Unicode equivalence from Wikipedia
Unicode提供了两个概念,规范等价和
兼容性。按规范定义的代码点序列
当
打印或显示。例如,代码点U+006E(拉丁语
小写“n”),后跟u+0303(组合颚化符“_”)是
由Unicode定义为在规范上等同于单个代码
点U+00F1(西班牙字母的小写字母“_”)。
因此,这些序列应该以相同的方式显示,
应用程序应以相同的方式处理,例如
按字母顺序排列姓名或搜索,并可替换为
其他。
这是对@smith的评论进行解释的很长一段路,我只需要得到tcpdf或者能够正确处理utf-8的东西。应该注意的是,我在php的iconv中得到了错误,所以我不完全确定是否可以通过切换到tcpdf来消除错误。