在Xamarin.iOS開發時,使用System.Text.Encoding.GetEncoding()遭遇到執行錯誤…
主題: |
在Xamarin.iOS開發時,使用System.Text.Encoding.GetEncoding()遭遇到執行錯誤… |
文章簡介: |
在Xamarin.iOS 開發時,可能會需要針對文字的編碼做一些處理,但由於並非所有的Encoding都在Xamairn.iOS的預設涵蓋內,該如何處理呢? 就讓本文章的介紹教你解決吧~ |
作者: |
James Tsai |
版本/產出日期: |
V1.0/2016.6.28 |
1. 前言
• 在Xamarin.iOS 開發時,可能會需要使用System.Text.Encoding.GetEncoding()來針對文字的編碼做一些處理,但由於並非所有的Encoding都在Xamairn.iOS的預設涵蓋內,所以會造成在執行時期出錯,就讓本文章的介紹教你解決吧~
2. 環境準備
• Windows 8/8.1/10
• Visual Studio 2015 / Xamarin Studio (見參考網頁)
3. 本文
在Xamarin.iOS 開發過程使用System.Text.Encoding.GetEncoding()時,在執行階段會遇到System.NotSupportException的相關執行錯誤訊息
• 在Xamarin.iOS的開發時,使用到System.Text.Encoding.GetEncoding()時,執行時期可能會出現下面類似的錯誤畫面,到底是為什麼呢?真是讓人苦惱。
使用Xamarin.iOS專案來重現此問題
在Xamarin.iOS專案當中,只要你直接呼叫System.Text.Encoding.GetEncoding(),然後在小括號又給他特殊的字碼編號時,例如:簡體中文” GB2312”。
• 然後只要你執行到這行程式碼時,就會得到這個執行的錯誤訊息。
解決辦法
• 由於Xamarin的官網在Encodings的介紹章節上就已經開宗明義告訴我們” Not all encodings are included in the Xamarin.iOS class library by default ”,所以如果要用到一些沒有涵蓋在內的Encodings該怎辦?!
• 在Visual Studio的工具選單中找到”偵錯”->”<專案名稱>屬性”。
• 接著在iOS Build分頁中選到Advanced分頁,注意到Internationalization的這個群組的設定部分,有相當多的checkbox選項可以選擇。
• 而根據官網在Internationalization Encoding這個章節的網頁上告訴我們,可能需要用到的語言所需的選擇來做選擇,例如:中文是cjk。
• 就在剛剛的Internationalization的這個群組,當中的cjk選項打勾。
• 再次重新進行編譯執行,就會發現能夠正常的順利執行,拿到正確的Encoding了!!!
4. 參考來源
• Internationalization Encodings