2013年9月29日 星期日
罕見字元 造成亂碼(SQL)
unicode 存進sql會出問題 因為如果資料類型不是nvarchar 會變成不是中文
例如 峯 存進去會變成 峯
所以資料庫建的時候 如果怕有罕見字元 最好都用N開頭的
如果上面的辦法 工程太大 程式碼就要轉碼!
using System.Text.RegularExpressions;
E_txtEMPERSON.Text = unicode( dt.Rows[0]["EMPERSON"].ToString());
public string unicode(string str)
{
string E_txtEMPERSONtxt = str;
string patten = @"&#(\d*);"; //樣式比對
Match m = Regex.Match(E_txtEMPERSONtxt, patten, RegexOptions.Multiline);
if (m.Success)
{
RecursiveNextMatch(m, ref E_txtEMPERSONtxt);
}
return E_txtEMPERSONtxt;
}
public static void RecursiveNextMatch(Match m, ref string names)
{
if (m.Captures.Count > 0)
{
if (m.Groups.Count == 2)
{
string oldchar = m.Groups[0].Value;
string unicode = m.Groups[1].Value;
byte[] b = BitConverter.GetBytes(ushort.Parse(unicode));
string unicodeStr = Encoding.Unicode.GetString(b);
names = names.Replace(oldchar, unicodeStr);
}
RecursiveNextMatch(m.NextMatch(), ref names);
}
}
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言