charset
一、html charset
準備一個由 big5 編碼成的檔案內容如下
big5.html
<html><head>
</head><body>
<p>這是 big5</p>
</body></html>
準備一個由 utf8 編碼成的檔案內容如下
utf8.html
<html><head>
</head><body>
<p>這是 utf-8</p>
</body></html>
預設以 chrome 瀏覽器開啟直接執行該 big5.html、utf8.html 檔,
皆可正常顯示,不會出現亂碼。
預設以 IE11 或 Edge 瀏覽器開啟直接執行該 big5.html、utf8.html 檔,
會發現微軟系的瀏覽器預設編碼為 big5。
但是將 big5.html、utf8.html 檔掛在 IIS 上,以 chrome 瀏覽器去瀏覽該 big5.html、utf8.html 檔,
卻出現了亂碼。
將 big5.html、utf8.html 檔掛在 IIS 上,以 IE、Edge 瀏覽器去瀏覽該 big5.html、utf8.html 檔,
會發現微軟系的瀏覽器預設編碼也是為 big5。
這將會導致致命的問題,就是將來把寫好的網頁放在 IIS 上供眾多使用者瀏覽時,
可能因為開發者沒有查覺檔案在 IIS 上、或是瀏覽器的不同而產生亂碼的情形,
而開發者卻不自知。
為了避免這個問題,建議開發者自己應該要固定使用 utf-8 編碼來寫網頁,
並且還要特別宣告 charset="UTF-8",如下
<html><head>
<meta charset="UTF-8">
</head><body>
<p>這是 utf-8</p>
</body></html>
或是
<html><head>
<meta http-equiv="Content-Type" content="charset=utf-8">
</head><body>
<p>這是 utf-8</p>
</body></html>
這樣一來瀏覽器所使用的編碼就一致了。
二、css charset
承先前把檔案架在 IIS 的方式,準備由 utf-8 編碼成的 index.html 與 mycss.css 範例
index.html
<html><head>
<link rel="stylesheet" media="screen" href="mycss.css" type="text/css" />
</head><body>
<p>html 不指定編碼</p>
<h1></h1>
</body></html>
mycss.css
h1:after { color: red; content: "紅字"; }
執行畫面如下
mycss.css
@charset "UTF-8"; h1:after { color: red; content: "紅字"; }
執行畫面如下
說明:
由上可發現,當 html 檔沒特別指定 charset "UTF-8" 時,
對於 css 檔字元的呈現也會出現亂碼問題;
當 css 檔有特別指定 charset "UTF-8" 時,至少可以確保 css 檔這邊不會有編碼問題。