當前位置: 首頁> 最新文章列表> 如何解決imagestring 函數中的文本顯示亂碼問題?

如何解決imagestring 函數中的文本顯示亂碼問題?

gitbox 2025-10-01

<?php // 正文開始 echo "

如何解決imagestring 函數中的文本顯示亂碼問題?

"
; // 正文內容 echo "

在PHP 中,imagestring 函數用於在圖像上繪製字符串,但在某些情況下,直接使用中文或其他非ASCII 字符時,會出現亂碼。這主要是因為imagestring 函數僅支持ISO-8859-1 編碼的單字節字符,而中文屬於多字節字符。

"
; echo "

常見解決方法

"
; echo "
    "
; echo "
  • 使用mb_convert_encoding 函數進行編碼轉換:在繪製中文之前,將字符串從UTF-8 轉換為GB2312。例如:
  • "
    ; echo "
    $text = '中文測試'; $text = mb_convert_encoding(\$text, 'GB2312', 'UTF-8'); imagestring(\$image, 5, 10, 10, \$text, \$color); "; echo "
  • 使用imagettftext 函數代替imagestring: imagettftext 支持TrueType 字體,可以正確顯示中文。例如:
  • "
    ; echo "
    \$font = &#39;path/to/your/font.ttf&#39;;
    \$text = &#39;中文測試&#39;;
    imagettftext(\$image, 20, 0, 10, 50, \$color, \$font, \$text);
    
    "
    ;
    echo "
  • 確保圖像和瀏覽器輸出編碼一致:在輸出圖像前,設置合適的header,例如:
  • "
    ; echo "
    header(&#39;Content-Type: image/png&#39;);
    
    "
    ;
    echo " " ; echo "

    總之,解決imagestring 中文亂碼問題的核心是: imagestring 本身不支持多字節字符,因此推薦使用imagettftext 並配合合適的字體文件。

    "
    ; ?>
    <?php // 尾部內容,與文章內容無關 echo "這是程序尾部信息顯示,和正文無關。\n" ; ?>

    這篇文章完整展示了:

    1. 前置PHP 輸出與正文分隔。

    2. 文章正文詳細說明imagestring中文亂碼原因和解決方法。

    3. 使用