malko e grybo no raboti :)
loshoto e che turseneto (ako imash takova, avtomatichno stava case sensitive za kirilicata).
Ako nqkoi ima po dobri idei ili implementacii, da spodeli
primer za polzvane :
if(ds.Tables["Property"].Rows[0]["Title"] != DBNull.Value)
{
lTitle.InnerHtml= BPString.Decode(ds.Tables["Property"].Rows[0]["Title"]);
}
else
{
lTitle.InnerHtml="";
}
klasa kudet vurshi mrusnata rabota:
using System;
using System.Data;
using System.Collections;
using System.Collections.Specialized;
namespace PiDesign.BorovetsProperty.DB
{
/// <summary>
/// Summary description for BPString.
/// </summary>
public class BPString
{
public BPString()
{
//
// TODO: Add constructor logic here
//
}
/// <summary>
/// encode cyrillic characters in predefined ones
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string Encode(string str)
{
Letters letter= new Letters();
string retStr="";
for(int i=0; i<str.Length; i++)
{
retStr += letter.GetCode(str.ToString());
}
return retStr;
}
/// <summary>
/// decode string and restore cyrillic characters from predefined ones
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string Decode(string str)
{
Letters letter= new Letters();
string retStr="";
for(int i=0; i<str.Length; i++)
{
if((str.ToString() == "#") && ((i+3) <str.Length))
{
retStr += letter.GetLetter(str.Substring(i,4));
i= i+3;
}
else
{
retStr += str.ToString();
}
}
return retStr;
}
public static string Decode(object strObj)
{
string str= strObj.ToString();
Letters letter= new Letters();
string retStr="";
for(int i=0; i<str.Length; i++)
{
if((str.ToString() == "#") && ((i+3) <str.Length))
{
retStr += letter.GetLetter(str.Substring(i,4));
i= i+3;
}
else
{
retStr += str.ToString();
}
}
return retStr;
}
}
/// <summary>
/// all the letters and their codes
/// </summary>
class Letters
{
private SortedList letterCodes;
public Letters()
{
letterCodes= new SortedList();
letterCodes.Add("'" , "#001");
letterCodes.Add("\"" , "#002");
letterCodes.Add("\\" , "#003");
letterCodes.Add("#" , "#004");
letterCodes.Add(";" , "#005");
letterCodes.Add("%" , "#006");
letterCodes.Add("а" , "#101");
letterCodes.Add("б" , "#102");
letterCodes.Add("в" , "#103");
letterCodes.Add("г" , "#104");
letterCodes.Add("д" , "#105");
letterCodes.Add("е" , "#106");
letterCodes.Add("ж" , "#107");
letterCodes.Add("з" , "#108");
letterCodes.Add("и" , "#109");
letterCodes.Add("й" , "#110");
letterCodes.Add("к" , "#111");
letterCodes.Add("л" , "#112");
letterCodes.Add("м" , "#113");
letterCodes.Add("н" , "#114");
letterCodes.Add("о" , "#115");
letterCodes.Add("п" , "#116");
letterCodes.Add("р" , "#117");
letterCodes.Add("с" , "#118");
letterCodes.Add("т" , "#119");
letterCodes.Add("у" , "#120");
letterCodes.Add("ф" , "#121");
letterCodes.Add("х" , "#122");
letterCodes.Add("ц" , "#123");
letterCodes.Add("ч" , "#124");
letterCodes.Add("ш" , "#125");
letterCodes.Add("щ" , "#126");
letterCodes.Add("ъ" , "#127");
letterCodes.Add("ь" , "#128");
letterCodes.Add("ю" , "#129");
letterCodes.Add("я" , "#130");
letterCodes.Add("А" , "#201");
letterCodes.Add("Б" , "#202");
letterCodes.Add("В" , "#203");
letterCodes.Add("Г" , "#204");
letterCodes.Add("Д" , "#205");
letterCodes.Add("Е" , "#206");
letterCodes.Add("Ж" , "#207");
letterCodes.Add("З" , "#208");
letterCodes.Add("И" , "#209");
letterCodes.Add("Й" , "#210");
letterCodes.Add("К" , "#211");
letterCodes.Add("Л" , "#212");
letterCodes.Add("М" , "#213");
letterCodes.Add("Н" , "#214");
letterCodes.Add("О" , "#215");
letterCodes.Add("П" , "#216");
letterCodes.Add("Р" , "#217");
letterCodes.Add("С" , "#218");
letterCodes.Add("Т" , "#219");
letterCodes.Add("У" , "#220");
letterCodes.Add("Ф" , "#221");
letterCodes.Add("Х" , "#222");
letterCodes.Add("Ц" , "#223");
letterCodes.Add("Ч" , "#224");
letterCodes.Add("Ш" , "#225");
letterCodes.Add("Щ" , "#226");
letterCodes.Add("Ъ" , "#227");
letterCodes.Add("Ь" , "#228");
letterCodes.Add("Ю" , "#229");
letterCodes.Add("Я" , "#230");
}
public string GetLetter(string code)
{
//if(letterCodes.ContainsValue(code))
if(letterCodes.ContainsValue(code))
{
return letterCodes.GetKey(letterCodes.IndexOfValue(code)).ToString();
}
else
{
return "";
}
}
public string GetCode(string letter)
{
if(letterCodes[letter] !=null)
{
return letterCodes[letter].ToString();
}
else
{
return letter;
}
}
}
}
|