试用场景:联系人分组,文字简拼等。
在执行Encoding.GETEncoding("GBK")方法时,安卓版会出现如下错误信息(IOS一般不会出现):
解决方式:右键安卓项目,选择“属性”按钮,在“Android选项”栏目中选择“CJK”后保存,清理项目并重新运行即可。
/// <summary> /// 返回给定字符串的首字母 /// </summary> /// <param name="IndexTxt"></param> /// <returns></returns> public static string GetStringSpell(String IndexTxt) { String _Temp = "-"; for (int i = 0; i < IndexTxt.Length; i++) { string _Str = GetOneIndex(IndexTxt.Substring(i, 1)); Regex regEnglish = new Regex("^[0-9a-zA-Z]"); if (regEnglish.IsMatch(_Str)) { _Temp = _Str; break; } } return _Temp.ToUpper(); } /// <summary> /// 得到单个字符的首字母 /// </summary> /// <param name="OneIndexTxt"></param> /// <returns></returns> public static string GetOneIndex(String OneIndexTxt) { try { if (Convert.ToChar(OneIndexTxt) >= 0 && Convert.ToChar(OneIndexTxt) < 256) { return OneIndexTxt; } else { Encoding gbk = Encoding.GetEncoding("GBK"); byte[] unicodeBytes = Encoding.Unicode.GetBytes(OneIndexTxt); byte[] gbkBytes = Encoding.Convert(Encoding.Unicode, gbk, unicodeBytes); return GetX(Convert.ToInt32(String.Format("{0:D2}", Convert.ToInt16(gbkBytes[0]) - 160) + String.Format("{0:D2}", Convert.ToInt16(gbkBytes[1]) - 160))); } } catch(Exception e) { Console.WriteLine(e.Message); } return ""; }