用PDFTk填充PDF时很奇怪的字符

| 我在Ubuntu上使用PHP和PDFTK。当用数据填充PDF时,我得到这些字母带有重音的奇怪字符:áóí。我正在使用UTF-8编码:我用回声mb_check_encoding($ var,\'UTF-8 \')进行了检查,该输出为1-TRUE。知道我能做什么吗? 我也尝试使用utf8_decode转换为ISO,但是仍然没有运气。 谢谢     
已邀请:
没错,utf8_decode()适用于可编码为Windows-1252(即U + 0000–U + 00FF)的字符。 但是,它不适用于Windows-1252中无法编码的字符。 但是,您始终可以使用UTF-16BE编码字符。您只能对单个字段执行此操作,例如编码单词“özil”:
<<
/V (þÿ^@ö^@z^@i^@l)
/T (name)
>>
(这里的\“ ^ @ \”表示一个NUL字符(U + 0000)。如果该文件在Windows-1252(latin1)中进行了编码,这就是在我的编辑器(vim)中的外观。) 请注意,您需要使用字节顺序标记(如果文件在Windows-1252中编码,则将显示为\“þÿ\”),并且您需要在UTF-中将整个字符串(在两个括号之间)编码。 16。 如果您使用PHP脚本生成FDF,则可以执行以下操作:
<<
/V (<?php echo chr(0xfe) . chr(0xff) . str_replace(array(\'\\\\\', \'(\', \')\'), array(\'\\\\\\\\\', \'\\(\', \'\\)\'), mb_convert_encoding(\"özil\", \'UTF-16BE\')); ?>)
/T (name)
>>
您也可以这样写出十六进制代码(即,用尖括号而不是括号括起来):
<<
/V <FEFF00F6007A0069006C>
/T (name)
>>
结果完全相同(字符串“özil”)。就字符而言,它的效率较低,但实际上在pdftk中似乎更可靠,而pdftk中有一些我发现的错误(在2.02版中)。 最后,您还可以为八进制表示法(\\ ddd)中的任何字符写出Unicode代码点。例如,ö的代码点为U + 00F6,八进制为366,因此您可以编写:
<<
/V (\\366zil)
/T (name)
>>
但是,这仅适用于U + 00FF(八进制377)。除此之外,您还必须使用UTF-16。 PDF标准允许您将整个FDF文档的编码设置为UTF-8。我尝试了此操作,但它不适用于pdftk,但是从理论上讲,它将像这样进行:
%FDF-1.2
1 0 obj
<<
/Version /1.3
/Encoding /utf_8
/FDF
(根据标准,您可能还必须将标头中的FDF版本设置为1.3(或更高)。) 您也可以在现场进行此操作:
<<
/V (özil)
/T (name)
/Encoding /utf_8
>>
但是正如我说的那样,我没有设法使其中的任何一项起作用。 pdftk似乎忽略了它。     
用utf8_decode解决。我猜有一些缓存问题,字符仍然显示     

要回复问题请先登录注册