2013-04-18 20 views
3

當我調用下面的代碼以$文本與西班牙我得到了正確的文字與圖像,但 當我打電話與加泰羅尼亞$文字相同的代碼我沒有得到的圖像中正確的文本。據我瞭解,西班牙特殊字符A和E正在工作,但加泰羅尼亞語字符A和E不工作。加泰羅尼亞語字符à和è不能使用php imagestringup - 如何解碼它們?

能否請你幫我解決這個問題。

<?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>'; 
    ?> 
+0

你爲什麼編碼然後解碼字符串? –

+1

我看到'utf8_encode()'被註釋掉了。這讓我懷疑你不知道你的編碼來源是什麼,對吧? –

+0

對不起,如果我添加註釋或取消註釋,我沒有試過它 –

回答

2

$string參數是在PHP非常明確的,因爲在PHP字符串不隨身攜帶的編碼和PHP不統一的字符串編碼的。換句話說,它們是字節數組,不像字符串通常是高級語言,所有字符串都有內部統一的unicode編碼,這樣的參數不會含糊不清。

我從評論中讀取的字符串必須在ISO-8859-2中,該ISO-8859-2僅支持á,但不支持à

您可以使用imagettftext有書面文件採取UTF-8編碼字符串,這是一件好事,因爲至少所有字符就可以得出。但是,它需要一個TrueType字體,我在這裏使用宋體的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); 

這裏的圖像,上面的代碼生成:

http://i.imgur.com/pUxibBf.png

+0

+1我剛剛從你身上學到另一種愚蠢的PHP設計決定:一個GD函數只接受拉丁文2 ... –

+1

@ÁlvaroG.Vicario耶這樣的選擇完全是任意的,即使你不知道的Unicode。也許作者是東歐?有點像'T_PAAMAYIM_NEKDOTAYIM' ...認真:'( – Esailija

相關問題