private static string GetCharSpellCode(string value)
{
long iCnChar;
byte[] ZW = Encoding.Default.GetBytes(value);
if (ZW.Length == 1)
return value.ToUpper();
int i1 = ZW[0];
int i2 = ZW[1];
iCnChar = i1 * 256 + i2;
if ((iCnChar >= 45217) && (iCnChar <= 45252))
return "A";
else if ((iCnChar >= 45253) && (iCnChar <= 45760))
return "B";
else if ((iCnChar >= 45761) && (iCnChar <= 46317))
return "C";
else if ((iCnChar >= 46318) && (iCnChar <= 46825))
return "D";
else if ((iCnChar >= 46826) && (iCnChar <= 47009))
return "E";
else if ((iCnChar >= 47010) && (iCnChar <= 47296))
return "F";
else if ((iCnChar >= 47297) && (iCnChar <= 47613))
return "G";
else if ((iCnChar >= 47614) && (iCnChar <= 48118))
return "H";
else if ((iCnChar >= 48119) && (iCnChar <= 49061))
return "J";
else if ((iCnChar >= 49062) && (iCnChar <= 49323))
return "K";
else if ((iCnChar >= 49324) && (iCnChar <= 49895))
return "L";
else if ((iCnChar >= 49896) && (iCnChar <= 50370))
return "M";
else if ((iCnChar >= 50371) && (iCnChar <= 50613))
return "N";
else if ((iCnChar >= 50614) && (iCnChar <= 50621))
return "O";
else if ((iCnChar >= 50622) && (iCnChar <= 50905))
return "P";
else if ((iCnChar >= 50906) && (iCnChar <= 51386))
return "Q";
else if ((iCnChar >= 51387) && (iCnChar <= 51445))
return "R";
else if ((iCnChar >= 51446) && (iCnChar <= 52217))
return "S";
else if ((iCnChar >= 52218) && (iCnChar <= 52697))
return "T";
else if ((iCnChar >= 52698) && (iCnChar <= 52979))
return "W";
else if ((iCnChar >= 52980) && (iCnChar <= 53640))
return "X";
else if ((iCnChar >= 53689) && (iCnChar <= 54480))
return "Y";
else if ((iCnChar >= 54481) && (iCnChar <= 55289))
return "Z";
return "?";
}