2013-03-27 70 views
1

我使用notepad ++和utf-8編碼寫入php代碼。我遇到了一個問題,即我的標題向下移動。我在<body>之後創建了Firebug顯示雙倍空間,所以如果我刪除空白空間,標題設置到他的位置。但是,當我按「Ctrl + U」,查看HTML代碼,我看這就是一切正常:用雙空格標記生成的HTML <body>

<!DOCTYPE html> 
<html> 
    <head> 
    </head> 
<body> 
    <div id="header"> 
     <div class="container"> 
     <img alt="" src="/../images/logo.png" class="active"> 
     </div> 
    </div> 
</body> 
</html> 

如果我選擇編碼\ CONVER到ANSI問題自敗的重要的一點。 我不能使用ANSI作爲數據庫使用UTF8和記錄有西里爾字符。

問題:

<body> 

    <div id="header"> 

回答

2

使用十六進制編輯器來檢查文件。在<body><div...之間的某處必須有一些「不可見」(例如'whitespace'或其他'隱形')字符。可以找到一個十六進制編輯列表here

儘管在這個例子中,最快的解決方案是簡單地保存爲ANSI/ASCII,重新打開並保存爲UTF-8。這應該擺脫無形的角色,或者至少在重新開放時顯示一些「怪異」的角色。

編輯 我看了一下你在問題中粘貼的問題;我覺得性格得到了由複製/粘貼失去了,因爲我沒有看到任何奇怪: enter image description here

(注意:0D0A是回車/換行,或「normal (windows) newlines」和20是一個正常的空間)


我只記得:我確實看到過這個問題,一次或兩次從jsFiddle複製代碼;它的「格式化程序/語法高亮顯示」似乎(或似乎)有時會添加一些不需要的字符。例如,請參閱this question

此外,BOM有時是禍水,但不會解釋(據我所知)爲什麼空間<body><div...之間因爲BOM是文件中的第幾個字節。如果您使用其中包含BOM的多重PHP文件(使用include()/require()等)來構建最終輸出,那麼其中一個文件可能包含不需要的(?)BOM。

+0

謝謝我使用了XVI32編輯器。我在<!DOCTYPE html>之前創建了由FF BB BF編碼的字符。刪除它們後,我得到了我想要的。非常感謝 ! – user2027175 2013-03-27 11:59:07

1

在記事本++中,使用PHP時必須嚴格使用UTF-8 without BOM。記事本++中的UTF-8不幸意味着每個PHP源文件都會附帶一個BOM表。

因爲PHP編碼是不經意的,所以它會把它當作文字內容來回應。這將導致各種問題,如headers already sent錯誤,並且您的文檔在某些瀏覽器中進入怪癖模式。

僅使用UTF-8 without BOM編碼比手動刪除由UTF-8創建的BOM要容易得多。

+0

謝謝! 我還發現有趣的文章http://www.w3.org/International/questions/qa-byte-order-mark.en.php – user2027175 2013-03-27 12:55:08