Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
加泰罗尼亚文字à;和è;don';无法使用php imagestringup-如何解码它们?_Php_Unicode_Utf8 Decode_Unicode Escapes - Fatal编程技术网

加泰罗尼亚文字à;和è;don';无法使用php imagestringup-如何解码它们?

加泰罗尼亚文字à;和è;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

当我用$text和西班牙语调用下面的代码时,我得到了正确的文本和图像,但是 当我用$text和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
。。。严肃地说:'(