2009-08-23 122 views
2

例如,當我從數據庫中檢索單詞程序而不是程序時會顯示的是程序。 '並且 - 更改爲 。我怎樣才能解決這個問題?php輸出 而不是 -

回答

0

你是治療CP-1252爲ISO-8859-1。 A very common mistake.使用標準化的utf-8或驗證輸入以確保用戶給出有效的iso-8859-1,當他這樣說時。如果你沒有(例如,你得到cp-1252),你可以將輸入音譯爲iso-8859-1。

5

存儲在您的數據爲UTF-8?試試你獲取任何數據之前執行這些查詢:

SET NAMES utf8 
SET CHARACTER SET utf8 

另外,還要確保你設置你的網頁編碼:

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8" /> 
8

替換字符(U + FFFD)意味着你的數據不正確編碼。您可能會將您的輸出聲明爲UTF-8,但您的數據庫數據不是UTF-8編碼。所以你需要將數據轉換爲UTF-8。你可以使用mb_convert_encoding來做到這一點。

0

這聽起來像一個字符集的問題,你的數據庫和網頁需要使用相同的字符集(或者你需要將它們之間的轉換)。查看Joel on Software上的this article。這個撇號似乎是一個捲曲的撇號,我的懷疑是短劃線是類似的。

0

可以通過使用不同的字符例如引起,馬克的房子和馬克的家,平時我從MS Word等文字處理這個角色,討厭

編輯: Whops,我看到堆棧溢出汽車糾正...我的觀點的存在,文字處理機創造不同的角色,當你打省略號按鈕

4

這是字符編碼的問題的性質:沿線某處的字符編碼被錯誤解釋。以下是您應該檢查的區域,從輸出該頁面開始基本向後工作:

當您輸出頁面時,您應該包含適當的內容類型標題,無論是從服務器(最好)還是從服務器在HTML:

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

當您連接到數據庫,您應該發出SET NAMES查詢,告知將數據發送到你的腳本使用什麼編碼數據庫中(注意,這無關什麼編碼您表使用)。

SET NAMES utf8; 

你的表本身應該被定義爲「正確」的字符編碼:

CREATE TABLE foo (...) CHARSET=utf8; 

如果您已經創建使用latin1表,並希望將它們轉換,你必須不僅發出ALTER TABLE改變CHARSET而且還改變了CHARSET每一個文本列(TEXTCHARVARCHAR)。

如果所有這一切似乎是正確的,問題可能出現「在路上」。也就是說,假設您有另一種將這些數據提交給數據庫的表單,您需要更新該表單(Content-TypeSET NAMES)。