iT邦幫忙

DAY 7
1

Windows Phone 程式開發系列 第 7

[WP 開發] WebBrowser 顯示中文亂碼和功能 ID_CAP_MICROPHONE 無法檢測

這篇文章提供在 Windows Phone 7 開發與上架遇到問題的處理經驗:
1. WebBrowser.NavigateToString 顯示中文亂碼
使用 WebBrowser.NavigateToString 方法顯示 HTML 内容,如下程式碼:

但執行顯示中文時亂碼,本文說明該如何處理這樣的狀況。

2. 功能 ID_CAP_MICROPHONE 無法檢測出來
提交 Windows Phone 7 的 App,程式在模擬器和實體裝置上都運作正常,但是提交時錯誤,錯誤報告內容大致上是按了某些按鈕會導致 App 當機,而這些會當機的功能,使用了錄影功能觸發閃光燈。

本文刊載於
http://www.dotblogs.com.tw/chou/archive/2013/07/27/112546.aspx
http://www.dotblogs.com.tw/chou/archive/2013/07/29/112572.aspx

在這篇文章您可以學到:

  1. WebBrowser.NavigateToString 亂碼處理。
  2. Windows Phone App 提交失敗,功能 ID_CAP_MICROPHONE 無法檢測出來。

WebBrowser.NavigateToString 顯示中文亂碼

此狀況只會發生在 Windows Phone 7,在 Windows Phone 8 不會發生。
透過以下代碼,將原始 HTML 做轉換,針對字元大於 127 的部分加上 &# 開頭 ; 結尾。

public static string ConvertExtendedASCII(string strSourceHTML)
{
    StringBuilder sbConvertResult = new StringBuilder();
    foreach (char chr in strSourceHTML)
    {
        var iChr = Convert.ToInt32(chr);
        if (iChr > 127)
        {
            sbConvertResult.AppendFormat("&#{0};", iChr);
        }
        else
        {
            sbConvertResult.Append(chr);
        }
    }
    return sbConvertResult.ToString();
}

轉換後,顯示在 WebBrower 結果,中文正常顯示。

Windows Phone App 提交失敗,功能 ID_CAP_MICROPHONE 無法檢測出來。
這是 Windows Phone 7 特有的錯誤,測試套件不會檢測 ID_CAP_MICROPHONE 所導致,在 Windows Phone 8 不會有此問題。
開啟 Visual Studio 和 App,開啟 WMAppManifest.xml 確定功能有勾選 ID_CAP_MICROPHONE。

開啟市集測試套件

ID_CAP_MICROPHONE 沒有檢測出來,同樣的情況,在登入 Windows Phone Dev Center 進行提交 App 時,上傳 XAP 檔案後,也一樣不會被檢測出來。

問題的解決方法是開啟 App.xaml 檢視程式碼,加上以下代碼,將會作強制檢測 ID_CAP_MICROPHONE。

Microsoft.Xna.Framework.Audio.Microphone mic = null;

重建 App,重新執行市集測試套件進行測試,ID_CAP_MICROPHONE 有被檢測出來。

提交時也能檢測 ID_CAP_MICROPHONE 出來。

其他相關資訊
International UTF-8 Characters in Windows Phone 7 WebBrowser Control
http://matthiasshapiro.com/2010/10/25/international-utf-8-characters-in-windows-phone-7-webbrowser-control/


上一篇
[WP 開發] 使用 ZXing.Net 產生 QR Code
下一篇
[WP 開發] 使用 Isolated Storage
系列文
Windows Phone 程式開發27

1 則留言

我要留言

立即登入留言