2008-10-27 41 views
17

我有一個備份服務器,可以自動備份我的活網站,文件和數據庫。在文本內顯示問號字符,這是爲什麼?

在生活網站上,文字看起來不錯,但是當您查看它的鏡像版本時,它會顯示'?'在一些文本中。該文本存儲在新聞數據庫表格中。

下面是它在鏡像服務器上的實時服務器和它的屏幕截圖。

將其備份到鏡像服務器的過程中會發生什麼? alt text http://i34.tinypic.com/2mpbfo6.jpg

回答

15

看你連接到數據庫發出以下命令後,下面的文章將是有益的

http://dev.mysql.com/doc/refman/5.0/en/charset-syntax.html

http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html

SET NAMES「UTF8 「;

確保您的網頁也使用UTF-8編碼:

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

PHP還提供了一些功能,這將是有用的轉換:

http://us3.php.net/manual/en/function.iconv.php

http://us.php.net/mb_convert_encoding

0

Unicode或其他字符集字符是否通過?

我經常在文本從電子郵件或某種其他文檔格式(例如單詞)複製到文本編輯器中時,在我經常使用的網站上看到類似的「奇怪」字符。編輯器可以顯示非ASCII字符,但瀏覽器不能。對於網站,我建議查找字符的HTML實體代碼並插入它,或者切換到更加標準的代碼。

1

您的瀏覽器沒有正確解釋頁面的編碼(因爲您已經強制它到一個特定的設置,或頁面設置不正確),因此無法顯示一些字符。

1

這將與字符編碼有關。

是否確定鏡像站點與字符編碼具有相同的屬性作爲主服務器?

根據您擁有的服務器類型,這可能是服務器進程本身的屬性,也可能是環境變量。

例如,如果這是一個UNIX環境,也許嘗試比較LANG或LC_ALL?

here

+0

實時服務器是Solaris,鏡像服務器是Linux rhel5,如果這有所作爲。 – Brad 2008-10-27 19:01:07

+0

Linux也使用LANG/LC_ALL。例如,請參閱: http://www.linux.com/base/ldp/howto/Indic-Fonts-HOWTO/locale.html – toolkit 2008-10-28 09:55:29

0

檢查鏡像服務器發出的字符集呃。似乎與主服務器有所不同 - 實際網站似乎在輸出Unicode,而鏡像則不是。此外,在傳入內容中清理Unicode字符並將其替換爲適當的HTML實體通常是一個好主意。

您的具體問題涉及「智能報價」,「電子短劃線」和「en破折號」。我知道你可以用&mdash;和(它應該在你的數據庫的輸入端完成)用n-dashes代替。我不知道什麼是聰明報價的正確替代品。 (我通常只是將所有捲曲的單引號替換爲'和所有捲曲的雙引號'...排版怪纔可以隨意在視線內拍攝我。)

我應該注意,有些瀏覽器比其他人更容易理解。問題 - Internet Explorer的Windows上趨於自動神奇地檢測並「修復」這個,Firefox和其他大多數瀏覽器中顯示問號

0

我平時罵MS Word,然後運行下面的WScript

//替換爲需要清理的文件的路徑
PATH =「test.html」

var go = WScript.CreateObject(「Scripting.FileSystemObject」);
var content = go.GetFile(PATH).OpenAsTextStream()。ReadAll();
var out = go.CreateTextFile(「clean - 」+ PATH,true);

//符號
含量= content.replace(/「/ G '「');
含量= content.replace(/」/G '」');
content = content.replace(/'/ g,「'」);
content = content.replace(/ -/g,「 - 」);
content = content.replace(/©/ g,「& copy;」);
content = content.replace(/®/ g,「& reg;」);
content = content.replace(/°/ g,「& deg;」);
content = content.replace(/¶/ g,「<p>」);
content = content.replace(/¿/ g,「& iquest;」);
content = content.replace(/¡/ g,'& iexcl;');
content = content.replace(/¢/ g,'& cent;');
content = content.replace(/£/ g,'& pound;');
content = content.replace(/¥/ g,'& yen;');

out.Write(content);

9

編輯的 「鏡像」 服務器上的Apache配置文件(有問題的服務器),並註釋掉以下行:

AddDefaultCharset UTF-8 

然後重新啓動Apache:

service httpd restart 

問題是「AddDefaultCharset UTF-8」行重寫.html文件中指定的內容類型;例如:

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

最常見的症狀是127以上的顯示爲黑色菱形其上具有問號該字符碼(在Chrome,Safari或Firefox)或作爲小盒子(在IE和Opera)。由Microsoft Word生成的HTML文件通常具有許多這樣的字符,最常見的是字符代碼160 = 0xA0,相當於「& nbsp;」在Windows-1252編碼,並經常發現span標籤之間,就像這樣:

<span style="mso-spacerun: yes">ááá </span> 
3

我來到這裏尋找對JavaScript的解決方案顯示在瀏覽器雖然不是直接與數據庫相關的...

在我的情況下,我複製並粘貼了一些我在互聯網上找到的文本到一個JavaScript文件中,並用Windows記事本保存了它。

當使用該JavaScript文件輸出字符串有問號(像問題所示的那些),而不是特殊字符,如重音字母等

我打開使用Notepad++該文件的網頁。打開該文件後,右鍵我看到的字符編碼設定爲ANSI你可以看到(在頁腳鼠標光標)在下面的截圖:

enter image description here

要解決此問題,請在Notepad++Encoding菜單並選擇Encode in UTF-8。你應該很好走。 :)

相關問題