2012-09-19 13 views
4

這裏的工作流程:在Word我想了解Windows智能報價如何變成「’」

  1. 用戶類型; Word將單個撇號更改爲「智能報價」
  2. 用戶將測試從單詞粘貼到網頁上的表單;形式中以UTF-8
  3. 編碼的頁中的數據被保存到一個MySQL數據庫與編碼latin1
  4. 由PHP應用程序從數據庫中檢索時(假定數據庫編碼是UTF-8)並顯示在UTF-8網頁中,報價顯示爲:「

我意識到輸入和輸出頁面的編碼與數據庫之間存在不匹配。我要解決。

無論如何,角色不應該繼續往返數據庫之旅嗎?

單個字符(0x92如果我沒有困惑)如何通過這個過程,並出現三個字符的另一端?

有人可以通過發生什麼事情發生在每個階段的流程字節?

+2

[每個程序員都絕對,積極需要知道編碼和字符集以處理文本](http://kunststube.net/encoding/) – deceze

+0

@deceze:感謝您鏈接到您的文章!我之前並不知道,它是這些問題的完美參考。 –

+0

是的,好文章,雖然起初我很困惑的名字是如此接近喬爾的更着名的一個。你的更實用! – AmbroseChapel

回答

9

步驟1:

字轉換'(統一代碼點U+2019RIGHT SINGLE QUOTATION MARK)。

步驟2:

被編碼成UTF-8作爲E2 80 99

步驟3

這似乎是發生問題。它看起來像UTF-8字符串存儲無需轉換在拉丁-1編碼的MySQL字段:

E2 80 99在Latin-1的是’

步驟4:

無論這裏或在先前步驟中,冒用Latin-1的字符串轉換爲UTF-8。

’ UTF-8是C3 A2 E2 82 AC E2 84 A2

這將顯示在UTF-8編碼網站上’

+1

根據http://www.i18nqa.com/debug/utf8-debug。我們正在處理E2 80 99和右單引號標記,但這只是爲了記錄。 – AmbroseChapel

+0

您已經向我提出了幾個關於完全轉換髮生的問題。現代Word在內部使用UTF-8,還是使用1252,並且瀏覽器在粘貼上轉換?但我相信你的「在這裏或在上一步」的答案是「在這裏」。如果我通過Perl和DBI獲取信息,而沒有說明預期的編碼方式,則沒有問題。有問題的「轉換」發生在*腳本*期望* UTF-8。 – AmbroseChapel

+0

@AmbroseChapel:感謝您發現錯誤!現在我當然不知道Word在內部做了什麼。我會假設它使用Unicode。不知道編碼中是否有任何Unicode代碼點被複制到剪貼板中,但我想Windows會透明地處理這些事情。 –

相關問題