Buongiorno,
Ad ogni pagina che gestisco con i dati nel database, parto con la connessione e l'impoitsazione del set
$db = $dbobj->connect_db($db_server,$db_username,$db_password, $db_name);
mysql_set_charset('utf8',$db);
Ho provato ad aggiungere, consigliato da altri programmatori, anche :
ini_set("mbstring.language", "Neutral");
ini_set("mbstring.internal_encoding", "UTF-8");
ini_set("mbstring.encoding_translation", "On");
ini_set("mbstring.http_input", "auto");
ini_set("mbstring.http_output", "UTF-8");
ini_set("mbstring.detect_order", "auto");
ini_set("mbstring.substitute_character", "none");
ini_set("default_charset", "UTF-8");
ini_set("mbstring.func_overload", 7);
setlocale(LC_TIME, "it_IT.UTF-8");
Ho eseguito anche una verifica che sia impostato correttamente :
printf("Current character set: %s\n", $mysqli->character_set_name());
Forse il problema nasce da come lancio il programma che poi fa l'aggiornamento al database.
La chiamata è eseguita passando attraverso javascript ad una chiamata ajax.
function aggiornatestosemplice( tela, iddom, gruppo, msgajax, idkeysche) {
. . . . .
//var miaStringa = unescape(encodeURIComponent(document.getElementById(nomecampo).value));
var miaStringa = document.getElementById(nomecampo).value;
var miaStringanoHTMLTags = miaStringa.replace(/(<([^>]+)>)/ig, '');
miaStringanoHTMLTags = strip_tags(miaStringanoHTMLTags);
. . . . .
httptesto.open("POST", 'getAggiornaDati.php' , true);
httptesto.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
httptesto.setRequestHeader("Content-length", parameters.length);
httptesto.setRequestHeader("Connection", "close");
httptesto.onreadystatechange = handleHttpResponseTesto(httptesto, iddom);
httptesto.send(parameters);
}
La stringa come vedete è trattata (nella versione precedente non avevo toccato la stringa prima del passaggio alla chiamata ajax e non funzionava lo stesso.
Confermo che anche nel programma
getAggiornaDati dopo la connessione c'è l'impostazione del set.
E ancora non capisco dove sia l'errore