Sharepoint list columns have an internal as well as external name to them. The external name is visible to the user, whereas, the internal name is used by sharepoint and never changes once it has been created, no matter how many times the external name is changed.
Some special characters used as a column name is converted to a special code which involves prefixing the values '_x' and '_' to the front and end of the special character's UTF-16 value.
public static string ConvertSpecialColumnNameCharacters(string stringToConvert)
{
stringToConvert = stringToConvert.Replace("~","_x007e_");
stringToConvert = stringToConvert.Replace("!","_x0021_");
stringToConvert = stringToConvert.Replace("@","_x0040_");
stringToConvert = stringToConvert.Replace("#","_x0023_");
stringToConvert = stringToConvert.Replace("$","_x0024_");
stringToConvert = stringToConvert.Replace("%","_x0025_");
stringToConvert = stringToConvert.Replace("^","_x005e_");
stringToConvert = stringToConvert.Replace("&","_x0026_");
stringToConvert = stringToConvert.Replace("*","_x002a_");
stringToConvert = stringToConvert.Replace("(","_x0028_");
stringToConvert = stringToConvert.Replace(")","_x0029_");
stringToConvert = stringToConvert.Replace("_","_x005F_");
stringToConvert = stringToConvert.Replace("+","_x002b_");
stringToConvert = stringToConvert.Replace("-","_x002d_");
stringToConvert = stringToConvert.Replace("=","_x003d_");
stringToConvert = stringToConvert.Replace("{","_x007b_");
stringToConvert = stringToConvert.Replace("}","_x007d_");
stringToConvert = stringToConvert.Replace(":","_x003a_");
stringToConvert = stringToConvert.Replace("“","_x0022_");
stringToConvert = stringToConvert.Replace("|","_x007c_");
stringToConvert = stringToConvert.Replace(";","_x003b_");
stringToConvert = stringToConvert.Replace("‘","_x0027_");
stringToConvert = stringToConvert.Replace("\\","_x005c_");
stringToConvert = stringToConvert.Replace("<","_x003c_");
stringToConvert = stringToConvert.Replace(">","_x003e_");
stringToConvert = stringToConvert.Replace("?","_x003f_");
stringToConvert = stringToConvert.Replace(",","_x002c_");
stringToConvert = stringToConvert.Replace(".","_x002e_");
stringToConvert = stringToConvert.Replace("/","_x002f_");
stringToConvert = stringToConvert.Replace("`","_x0060_");
stringToConvert = stringToConvert.Replace(" ","_x0020_");
return stringToConvert;
}