2009-10-16 29 views
2

我有一個簡單的回顯功能的PHP文件:PHP日語字符串設置爲?

echo 'アクセスは撥ねりません。'; 

但是當我訪問該頁面,我得到這樣的:

???????????? 

有人能幫助我嗎? 我也有我的頁面編碼設置爲UTF-8,我知道它,因爲我用的所有瀏覽器都這麼說。 我也在回聲功能之前這樣做:

mb_internal_encoding('UTF-8'); 

這是幹什麼的? 它幫助我嗎? 我需要的是能夠回顯一個靜態的日文字符串。

謝謝!

+1

你的文件也保存爲UTF8嗎?如果是的話,也許你需要其他編碼,比如UTF-16? – Seb

回答

1

我明白了。 我只需要設置mbstring擴展設置來處理UTF-8中的內部字符串。 Thas擴展與我的PHP 5.3.0構建是標準的。

7

有幾個地方可能會出錯。

首先,如果你不設置PHP中的輸出編碼與頭()

header('Content-type: text/html; charset=utf-8'); 

或與meta標籤到您的html:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

您需要檢查php.ini設置default_charset。機會是默認爲iso-8859-1

其次,您可能還需要檢查您保存php腳本的內容編碼。如果您將它保存爲ASCII或其他拉丁字符集,它會將字符混淆。

+0

我正在做所有這些事情,它仍然顯示問號。 – agentfll

0

也許您正在打印包含在UTF-16(擴展字符集)中的日文字符?

0

我只是做了一個快速測試和你的榜樣爲我工作,所以它是最有可能的其中之一:

  • 你的文件沒有保存在UTF-8,但一些其他的編碼方式,比如按住Shift JIS。一個體面的編輯器應該可以讓你看到它使用什麼編碼
  • 您的服務器發送錯誤的http頭。你可以使用一些工具來檢查標題並粘貼結果嗎?或者你從瀏覽器中得到的結果?
  • 的瀏覽器使用不兼容的字體

我保存在UTF-8文件,粘貼代碼到它,我的服務器服務與內容類型的文件:text/html的; charset = utf-8,它顯示得很好。不需要使用mb_函數或其他任何東西。