试用场景:联系人分组,文字简拼等。
在执行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 "";
}