2010-09-13 54 views
0

最後我不得不重新編譯PHP並--enable-gd-jis-conv。 但是,文字顯示是錯誤的,用日語。在日本PHP-GD文字顯示很奇怪

$text = '夏の天気'; 
$fontfile = '/usr/share/fonts/japanese/TrueType/sazanami-mincho.ttf'; 

return imagettftext ($image, $size, $angle, $x, $y, $color, $fontfile, $text); 

但不同漢字(日文字符)顯示而不是(非常不同的,貌似中國)。

難道是編碼的問題?

在RHEL 5.4使用PHP 5.3.3。

+0

什麼是你的輸入編碼,什麼是你的服務器輸入配置?由於日文可以使用多種類型的編碼(EUC,JIS,SJIS,UTF8) – 2010-09-13 03:13:38

+0

使用UTF-8,'mb_internal_encoding('UTF-8')'。輸入來自Emacs utf8編碼。 – 2010-09-13 03:24:31

回答

1

我不得不跑這來得到它的工作

$text = mb_convert_encoding('夏の天気', "SJIS", 'UTF-8'); 
2

好,日本的多字節編碼的語言有不少怪癖。 首先,請確保您的服務器安裝了mbstring模塊。

其次,以減少可能中途破損的機率,儘量保持所有編碼在您的網站/項目是一致的:網站的觀點和源文件最好應具有相同的編碼寫入。

專門針對您的問題,您可能需要使用以下功能嘗試:

mb_http_inputhttp://www.php.net/manual/en/function.mb-http-input.php

這一次將確保您的HTTP輸入正確編碼(即表單數據)。

mb_ internal_ encodinghttp://www.php.net/manual/en/function.mb-internal-encoding.php

設置由PHP使用的內部編碼。

mb_regex_encodinghttp://www.php.net/manual/en/function.mb-regex-encoding.php

設置正則表達式使用PHP的編碼。

mb_convert_encodinghttp://www.php.net/manual/en/function.mb-convert-encoding.php

對於字符串轉換。

mb_convert_variableshttp://www.php.net/manual/en/function.mb-convert-variables.php

轉換一整批串/陣列的編碼。

編輯此外,從模塊的名稱,你可能想嘗試喂JIS編碼數據的功能。

+0

爲了關注* gd *測試並避免一些其他副作用,文本當前直接輸入到php代碼中(夏の天気)。 'mb_internal_coding('utf-8')'設置在開頭。必須有一些簡單的遺漏 - 也許字體是錯誤的?(在RHEL英文系統上,'yum install fonts-japanese')。 – 2010-09-13 03:31:08

+0

感謝您的貢獻(投票贊成) – 2010-09-13 03:38:41

0
imagettftext($this->im, 58, 0, 50, 100, $text_color, $font, mb_convert_encoding('佳人', 'UTF8', 'UTF-8')); 

這爲我工作。似乎適用於幾種不同的日文字體。

+1

@NR請檢查答案 - 是不是一樣? – 2011-07-31 11:24:10