作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
当我用带有西类牙语的 $text 调用下面的代码时,我得到了带有图像的正确文本,但是当我用加泰罗尼亚语用 $text 调用相同的代码时,我没有在图像中得到正确的文本。我知道西类牙文特殊字符 á 和 é 有效,但加泰罗尼亚语字符 à 和 è 无效。
你能帮我解决这个问题吗?
<?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>';
?>
最佳答案
$string
参数在 PHP 中非常模糊,因为 PHP 中的字符串不携带编码,而 PHP 根本不统一字符串的编码。换句话说,它们是字节数组,不像字符串通常在高级语言中,所有字符串都有内部统一的 unicode 编码,这样的参数不会有歧义。
我从评论中看到字符串必须在 ISO-8859-2 中,它只支持 á
但不支持 à
。
您可以使用 imagettftext
记录为采用 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);
这是上面代码生成的图像:
关于php - 加泰罗尼亚语字符 à 和 è 不适用于 php imagestringup - 如何解码它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16079407/
当我用带有西类牙语的 $text 调用下面的代码时,我得到了带有图像的正确文本,但是当我用加泰罗尼亚语用 $text 调用相同的代码时,我没有在图像中得到正确的文本。我知道西类牙文特殊字符 á 和 é
我是一名优秀的程序员,十分优秀!