我一直在努力弄清楚这里发生了什么。我正在尝试使用 imagettftext() 将文本放在我在 PHP 中创建的图像上。我有一些文字:
$line = "I'm using this string";
当我回显出来时,它显示的内容完全相同。最后的 imagettftext() 变量是在图像上放置文本的行。所以当我这样做时:
echo $line."</br>";
imagettftext($my_img, $font_size, 0, $x+4, (($font_size+$margin_top)*$line_number)+$new_shadow_addition, $shadow_colour, $font, $line);
它正确地回显了这条线,但是当我查看图像时,它显示为
I□m using this string
对于任何其他撇号也是如此。该字符串是正确的,但它以某种方式对其进行编码或在 imagettftext() 之前对其进行解码。在使用 imagettftext 之前,我尝试将其转换为纯 UTF-8,但这仍然没关系(它目前是 ASCII;我在使用它之前检测到了编码)。
这不是我使用的字体,因为我尝试了几种字体。
任何想法为什么会发生这种情况?
编辑
有关更多信息,我正在使用 simple_html_dom 从另一个页面抓取数据,然后将该信息用于图像,因此我不确定这是否会影响任何事情。这不应该是因为我已经检测到编码和字符,而且似乎没有什么不合适的。
这让我非常疯狂,我已经重新审视了三天,这没有任何意义。我已经尝试了 PHP 中的所有 UTF-8 解码可能性以及我能想到或找到的任何其他内容。我在我正在使用的字符串上做了一个 rawurlencode() ,它%92
为撇号字符返回 a ,这意味着它是一个撇号,而不是单引号或%60
字符。任何帮助将不胜感激。谢谢你。
编辑
我确定这仅与撇号字符(ASCII 中的 %92)有关。我已经尝试使用 %27 (单引号)并且效果很好。我见过的其他字符似乎也没有导致问题,所以看起来它与撇号字符隔离。