2009-02-15 67 views
1

我一直在研究一種應用程序,該應用程序應該能夠接受多種語言的標記和搜索查詢。這不是問太多,是嗎?字符編碼似乎適用於MAMP服務器,但不適用於WAMP服務器

現在,在我的開發MAMP服務器上一切都很好。我添加多種語言標籤,用任何我想要的語言進行搜索等。

另一方面,在生產WAMP服務器上,多語言字符會帶來麻煩。甚至不是所有的時間,只是某些時候,或某些角色,我還不確定。

會發生什麼,他們得到額外的字符,然後他們的URL解碼是不正確的。

這兩個環境都使用PHP 5,MySQL和Apache。

我的猜測是我在某個地方弄錯了一個設置。

任何想法?

  • 更新:我現在確定它是特定的字母(希伯來ל,מא例如)

  • 更新:容易複製:總是相同的字母得到錯誤的編碼。

  • 內容類型是text/html; charset=utf-8

此外,我進一步精確定位了一點:
我用的搜索字符串:ליבני
在結果頁面上我看到這個:

  • 在地址欄中,搜索詞組是正確的,網址編碼正確。
  • 在這是HTML本身我看到字符串「_יבני」「%D7_%D7%99%D7%91%D7%A0%D7%99」這意味着ל已被編碼到「%D7_」,而不是「%D7%9C」,因爲它應該有。

我真的不知道該往哪裏走。
任何想法?任何人?

+0

您是否已經在使用UTF-8?你的應用程序是否聲明瞭這個正確的(HTTP標頭)?這些不正確的編碼問題何時出現?這是可重複的嗎? – Gumbo 2009-02-15 14:29:02

+0

我編輯了這個問題來回答你的問題。 謝謝。 – Omer 2009-02-15 16:23:42

回答

0

原來的問題是PHP的parse_url內某處()。 我想在某些版本中,在某些平臺上,parse_url()不能正確處理UTF字符。它被發現在窗口at least one more time

我現在能夠解決它。

感謝大家的時間和關注, 奧馬爾。

0

我建議您使用UTF-8進行內部和外部編碼。使用AddDefaultCharset directive告訴Apache你的默認編碼:

AddDefaultCharset utf-8 

現在你只需要確保你的應用程序正確處理的數據(見default_charset directive)。如果你的輸出使用UTF-8,客戶端應該使用它來做進一步的請求(URL,表單數據)。

1

字符集是一個簡單的概念。關於他們的令人困惑的事情是,有多個層面必須正確完成。如果你在一個地方搞砸了,它通常會顯示在一個完全不同的地方。

所以,對你的問題稍微居高臨下,但也是非常真實的答案是,你需要知道你在做什麼,而不是用棍子戳它,直到它看起來沒問題。

我提出以下建議閱讀:

相關問題