加泰罗尼亚文字à;和è;don';无法使用php imagestringup-如何解码它们?
当我用$text和西班牙语调用下面的代码时,我得到了正确的文本和图像,但是 当我用$text和Catalan调用相同的代码时,我在图像中没有得到正确的文本。我知道西班牙的特殊角色和正在发挥作用,但加泰罗尼亚的角色和è却不起作用 你能帮我纠正这个问题吗加泰罗尼亚文字à;和è;don';无法使用php imagestringup-如何解码它们?,php,unicode,utf8-decode,unicode-escapes,Php,Unicode,Utf8 Decode,Unicode Escapes,当我用$text和西班牙语调用下面的代码时,我得到了正确的文本和图像,但是 当我用$text和Catalan调用相同的代码时,我在图像中没有得到正确的文本。我知道西班牙的特殊角色和正在发挥作用,但加泰罗尼亚的角色和è却不起作用 你能帮我纠正这个问题吗 <?php //$text = "Sándalo Ayurvédicos"; // Text in Spanish $text = "Sàndal Ayurvèdics"; // Text in Catalan
<?php
//$text = "Sándalo Ayurvédicos"; // Text in Spanish
$text = "Sàndal Ayurvèdics"; // Text in Catalan
//$text = utf8_encode($text);
//$text = utf8_decode($text);
$img = "sample";
$im = imagecreatetruecolor(25, 350);
$black = imagecolorallocate($im, 0, 0, 0);
imagecolortransparent($im, $black);
$textcolor = imagecolorallocate($im, 73, 100, 23);
imagestringup($im, 3, 10, 340, $text,$textcolor);
imagepng($im, $img.'.png');
imagedestroy($im);
$imagename = $img.'.png';
print '<img src="'.$imagename.'"></img>';
?>
在PHP中,
$string
参数是非常不明确的,因为PHP中的字符串不带编码,PHP根本不统一字符串的编码。换句话说,它们是字节数组,与高级语言中的字符串不同,在高级语言中,所有字符串都有内部统一的unicode编码,这样的参数就不会有歧义
我从评论中读到字符串必须在ISO-8859-2中,它只支持a
,而不支持a
您可以使用文档中的内容来获取UTF-8编码中的字符串,这很好,因为至少可以绘制所有字符。但它需要TrueType字体,我在这里使用的是Arial Unicode:
<?php
header("Content-Type: image/png");
$text = "汉语/漢語"; //My PHP is already saved as UTF-8 in text editor - no conversion necessary
$im = imagecreatetruecolor(25, 350);
$black = imagecolorallocate($im, 0, 0, 0);
imagecolortransparent($im, $black);
$textcolor = imagecolorallocate($im, 73, 100, 23);
//270 is the angle, from up-to-bottom
imageTtfText( $im, 12, 270, 10, 10, $textcolor, "./arial_unicode.ttf", $text );
//12 is font size
//Camel-cased because imagettftext just looks horrible and php is case-insensitive
imagepng($im);
imagedestroy($im);
为什么要先对字符串进行编码,然后再对其进行解码??我看到utf8\u encode()
被注释掉了。这让我怀疑你根本不知道你的编码源是什么,对吗?抱歉,如果我添加注释或取消注释,我尝试了它,但没有任何影响。你的文本编辑器是否有状态栏或文件属性对话框,你可以在其中读到类似于ANSI
,UTF-8
或类似的文件?php文件的编码是ANSI。+1我刚刚从您那里了解到另一个愚蠢的php设计决策:一个只接受拉丁语的GD函数…@lvaroG.Vicario是的,即使您不知道Unicode,这个选择也是完全任意的。也许作者是东欧人?有点像T_PAAMAYIM_NEKDOTAYIM
。。。严肃地说:'(