Windows Phone 7 WebBrowser中文亂碼問題
Windows Phone 7中的WebBrowser很好用,其中最常用的方法應(yīng)該是Navigate了,該方法傳入一個Uri對象,既可以是某個網(wǎng)址的絕對路徑,也可以是IsolateStorage里某個網(wǎng)頁的相對路徑。但有時候,我們的HTML是程序動態(tài)生成的,這個情況下使用NavigateToString方法則更加方便(否則需要先將網(wǎng)頁寫入IsolateStorage),然而卻遇到了中文亂碼問題,比如如下一個極簡單的例子就會出現(xiàn)亂碼情況。
- WebBrowser1.NavigateToString("<html><head></head><body><h1>這里是中文內(nèi)容</h1><h2>Here are English Content</h2></body></html>");
經(jīng)過網(wǎng)上搜索,找到了解決方案,原文為International UTF-8 Characters in Windows Phone 7 WebBrowser Control,里面給出了一個轉(zhuǎn)換算法,經(jīng)過實驗,亂碼問題解決了,但是效率比較低(尤其是HTML有幾十KB的時候),所以又簡單改進(jìn)了一下如下。
- public static string ConvertExtendedASCII(string HTML)
- {
- StringBuilder str = new StringBuilder();
- char c;
- for (int i = 0; i < HTML.Length; i++)
- {
- c = HTML[i];
- if (Convert.ToInt32(c) > 127)
- {
- str.Append("&#" + Convert.ToInt32(c) + ";");
- }
- else
- {
- str.Append(c);
- }
- }
- return str.ToString();
- }
OK,重新運行一下NavigateToString,沒有亂碼了,這樣一來,Windows Phone的WebBrowser就比較***了。
- WebBrowser1.NavigateToString(ConvertExtendedASCII("<html><head></head><body><h1>這里是中文內(nèi)容</h1><h2>Here are English Content</h2></body></html>"));
原文地址:http://www.wtnzone.com/post/2011/09/05/WP7-WebBrowser-NavigateToString-International-UTF-8.aspx