標籤:style blog color java 使用 strong io 檔案
想必大家都知道,使用中文進行編程,總逃不開一個“字元編碼”的問題。
在儲存的時候,編碼不對就變成亂碼,亂碼一處理不好還會產生無法復原的結果。
在傳輸和解析的時候,編碼不對也會導致處理出錯。
在web方面,HTML、CSS、JavaScript 都或多或少地會碰到這類問題,解決這類問題我們可能會用到JavaScript裡的3個方法:
1,String.fromCharCode( 字元編碼num ),傳入單個字元的Unicode編碼,得到字元。
2,字串.charCodeAt( 字元下標 ),指定字串下標,得到下標所指字元的Unicode編碼,返回10進位的編碼(num類型)。
3,escape( 字串str ),跟第2條一樣,也能把字元轉換成字元編碼,不同的是這裡可以一次性轉換多個字元,並返回16進位的編碼(str類型)。
利用這兩個方法可以解決字元和字元編碼的轉換。
HTML
裡最典型的就是:左右角括弧(<, >)、不間斷空格、單雙引號(‘, ") 、& © 等字元的使用
在使用的時候我們必須記住:<要寫成<、>要寫成>、不間斷空格則要寫成 ......
如果記不住呢?只能查,上網找表查。。。
其實大可不必這麼麻煩,要知道,HTML支援對字元編碼的解析,如:<對應的是<、>對應的是=
其中60和61指的是這個字元在Unicode中的編碼,通過使用上面的方法:
"<".charCodeAt(0); // 返回 60,相應的 < 代表 <
"©".charCodeAt(0); // 返回 169,說明 © 會被HTML解析成 ©
代碼如下:
function toCharCode( ch ) { // 適用於HTML,用於擷取字元實體。 if( typeof ch === "string" && ch.length === 1) { alert( "字元 " + ch + " 所對應的HTML字元實體是:\n&#" + ch.charCodeAt(0) + ";" );
} else { alert( "請輸入單個字元, 如\"&\"." ); }}toCharCode( "?" ); // 把?號替換成你要轉換的字元,運行。
使用方法:開啟瀏覽器,按F12,複製上面的代碼並替換關鍵字,運行。
CSS
CSS碰到的字元編碼的問題比較少,但據我所知的,下面這種情況:
body { font-family: "微軟雅黑", sans-serif;}
直接使用中文會在ie6下可能會導致無效,使用英文名字又可能導致別的問題,所以最佳方案是把漢字轉成Unicode碼。
代碼如下:
function toUnicode( str ) { // 把漢字轉換成Unicode編碼,適用(但不限於)CSS,JavaScript。 if ( typeof str === "string" ) { alert( "\"" + str + "\" 的Unicode編碼是:\n" + escape(str).replace(/\%/g, "\\") ); } else { alert( "請輸入一個或多個字元,如\"宋體\"." ); }}toUnicode( "?" ); // 把?號替換成要轉換的漢字,運行。
反過來,如果我們在查看源檔案的時候看到了類似:
body {font-family: "\u5B8B\u4F53";}
之類的寫法,我們也可以反過來講Unicode碼翻譯成漢字。操作更簡單:
直接開啟瀏覽器,F12。輸入 alert("\u5B8B\u4F53"); 並運行,瀏覽器就會跳出提示“宋體”。
JavaScript
js的字串已經足夠強大,對於漢字可以直接寫成 "這是漢字",已經足以應付大多數情況。
但js裡還有用於表示特殊字元的“逸出字元”,如\n。另外還有 \x?? 用來表示ASCII碼字元,\u???? 用來表示Unicode碼字元。
具體的轉換我也不重複說了,平時能用到的主要就是 漢字 和 Unicode 的相互轉換,上面已經講過。JavaScript的轉換方法跟CSS也是一致。
唯一需要注意的就是:
如果結果不正確,請確認格式和進位是否一致。