In Java I solved converting the input string in a List of Characters and comparing it with the specials characters.
static String charsSpecial = "@#[]€";
my method is this.
public static void insertValueExplorer(WebDriver driver, WebDriverWait mywait, String locator, String variable) {
mywait.until(ExpectedConditions.elementToBeClickable(By.xpath(locator))).clear();
if(driver.toString().contains("InternetExplorerDriver")){
List<Character> chars = Utils.convertStringToCharList(variable);
int j=0;
while(j<chars.size())
{
if (charsSpecial.contains(chars.get(j).toString())){
mywait.until(ExpectedConditions.elementToBeClickable(By.xpath(locator))).sendKeys(Keys.chord(Keys.CONTROL, Keys.ALT, chars.get(j).toString()));
}else{
mywait.until(ExpectedConditions.elementToBeClickable(By.xpath(locator))).sendKeys(chars.get(j).toString());
}
j=j+1;
}
}else {
mywait.until(ExpectedConditions.elementToBeClickable(By.xpath(locator))).sendKeys(variable);
}
}
I execute my tests on all browsers but this method is necessary only for Explorer