mehdico
دوشنبه 26 تیر 1391, 15:44 عصر
با سلام،
من تابع زیر رو نوشتم تا کاراکترهای رشته رو به کد هگزش تبدیل کنم که به این صورت در بیاد:
\uxxxx
که بجای xxxx کد کاراکتر قرار میگیره ، مثلا برای پ به این صورت خواهد بود :
\u067e
حالا مشکل من اینجاست که حروفی که چند حالت دارند مثل حرف «پ» برای تمام حالتهاش یه کد مشابه رو برمیگردونه مثلا کد پ ، پ ، پـ و ـپـ با هم برابره !! کسی میتونه مشکل منو حل کنه؟
public static string ConvertToHex(string unicodeString)
{
Encoding encUnicode = Encoding.BigEndianUnicode;
string str="";
byte[] unicodeBytes = encUnicode.GetBytes(unicodeString);
StringBuilder hex = new StringBuilder(byte.MaxValue);
Boolean flg = false;
foreach (byte b in unicodeBytes){
hex.AppendFormat("{0:x2}", b);
if (flg == true)
{
flg = false;
str += @"\u"+hex.ToString();
hex.Remove(0, hex.Length);
}
else
{
flg = true;
}
}
return str;
}
در ضمن من متن رو از textbox میگیرم در یک string ذخیره میکنم و به تابع میدم. اتریبیوت خاصی که برای تکست باکس لازم نیست؟ (منظورم اینه که تکس باکس احیاناً انکدینگ متن ورودی رو بهم نمیریزه؟)
ممنونم.
من تابع زیر رو نوشتم تا کاراکترهای رشته رو به کد هگزش تبدیل کنم که به این صورت در بیاد:
\uxxxx
که بجای xxxx کد کاراکتر قرار میگیره ، مثلا برای پ به این صورت خواهد بود :
\u067e
حالا مشکل من اینجاست که حروفی که چند حالت دارند مثل حرف «پ» برای تمام حالتهاش یه کد مشابه رو برمیگردونه مثلا کد پ ، پ ، پـ و ـپـ با هم برابره !! کسی میتونه مشکل منو حل کنه؟
public static string ConvertToHex(string unicodeString)
{
Encoding encUnicode = Encoding.BigEndianUnicode;
string str="";
byte[] unicodeBytes = encUnicode.GetBytes(unicodeString);
StringBuilder hex = new StringBuilder(byte.MaxValue);
Boolean flg = false;
foreach (byte b in unicodeBytes){
hex.AppendFormat("{0:x2}", b);
if (flg == true)
{
flg = false;
str += @"\u"+hex.ToString();
hex.Remove(0, hex.Length);
}
else
{
flg = true;
}
}
return str;
}
در ضمن من متن رو از textbox میگیرم در یک string ذخیره میکنم و به تابع میدم. اتریبیوت خاصی که برای تکست باکس لازم نیست؟ (منظورم اینه که تکس باکس احیاناً انکدینگ متن ورودی رو بهم نمیریزه؟)
ممنونم.