Xamarin.iOS Internationalization Encodings

在Xamarin.iOS開發時,使用System.Text.Encoding.GetEncoding()遭遇到執行錯誤…

James Tsai 2016/06/30 11:27:57
608

主題

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

https://developer.xamarin.com/guides/ios/advanced_topics/localization_and_internationalization/encodings/


James Tsai