[英]Translating ISO-8859-1 to UTF-8 problem
我的一個項目是從網上提取文檔並閱讀。 本文檔由第三方提供,不會更改(內容會更改,但格式和其他內容不會更改)。 問題在於此文檔包括從Word(UTF-8)復制並粘貼的內容,但是該文檔以ISO-8858-1編碼,因此這些字符以“?”的形式保存到數據庫中。
如果我跳過文本,然后將其重新編碼為UTF-8,則不會得到智能引號和破折號,而只會得到兩個垃圾字符。
如何將帶有UTF-8字符的ISO-8859-1文檔轉換回UTF-8,以便可以按最初創建的樣子顯示它?
$fixed = mb_convert_encoding($broken, "UTF-8", "ISO-8859-1");
不知道它是否可以正確處理8859中嵌入的UTF-8,但這是“正常”的操作方式。 手冊頁在這里 。 旋轉一下,看看情況是否變得更清潔或更整齊。
我在這里找到了解決方案: PHP:將“'”字符從ISO-8859-1轉換為UTF-8時出現問題
該服務器聲稱其服務於ISO-8859-1,但實際上是Windows-1252,可以毫無問題地轉換為UTF-8。
幸運的是,ISO 8859-1是8位透明的。 因此,您可以使用iconv , mb_convert_encoding或utf8_encode解碼內容。
我不確定“我越過文字”的意思,但是如果這確實是UTF-8,指定為ISO 8859-1,請嘗試消除所有中間文字操作。 如果仍然失敗,請提供一個(簡短)輸入文檔的示例。 可能不是將UTF-8實際指定為ISO 8859-1。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.