Solo oggi mi sono reso conto che mi mancava questo nei miei script PHP:MySQL - Convertire i caratteri latin1 su un tavolo UTF8 in UTF8
mysql_set_charset('utf8');
Tutti i miei tavoli sono InnoDB, collazione "utf8_unicode_ci", e tutta la mia VARCHAR le colonne sono anche "utf8_unicode_ci". Ho mb_internal_encoding('UTF-8');
sui miei script PHP, e tutti i miei file PHP sono codificati come UTF-8.
Così, fino ad ora, ogni volta che "Inserisci" qualcosa con segni diacritici, ad esempio:
mysql_query('INSERT INTO `table` SET `name`="Jáuò Iñe"');
Il 'nome' contenuti sarebbero, in questo caso: Jáuò Iñe
.
Da quando ho risolto il set di caratteri tra PHP e MySQL, i nuovi INSERT ora vengono archiviati correttamente. Tuttavia, voglio correggere tutte le vecchie file che sono "incasinate" al momento. Ho già provato molte cose, ma rompe sempre le corde sul primo carattere "illegale". Qui è il mio codice corrente:
$m = mysql_real_escape_string('¿<?php echo "¬<b>\'PHP á (á)ţăriîş </b>"; ?> ă-ţi abcdd;//;ñç´พดแทฝใจคçăâξβψδπλξξςαยนñ ;');
mysql_set_charset('utf8');
mysql_query('INSERT INTO `table` SET `name`="'.$m.'"');
mysql_set_charset('latin1');
mysql_query('INSERT INTO `table` SET `name`="'.$m.'"');
mysql_set_charset('utf8');
$result = mysql_iquery('SELECT * FROM `table`');
while ($row = mysql_fetch_assoc($result)) {
$message = $row['name'];
$message = mb_convert_encoding($message, 'ISO-8859-15', 'UTF-8');
//$message = iconv("UTF-8", "ISO-8859-1//IGNORE", $message);
mysql_iquery('UPDATE `table` SET `name`="'.mysql_real_escape_string($message).'" WHERE `a1`="'.$row['a1'].'"');
}
E 's "Update" con i personaggi attesi, se non che la stringa viene troncata dopo il carattere "a". Voglio dire, quel personaggio e i seguenti caratteri non sono inclusi nella stringa.
Inoltre, il test con la "iconv()" (che è commentato sul codice) fa lo stesso, anche con // ignorare e // Translit
ho testato anche diversi charsets, tra ISO-8859- 1 e ISO-8859-15.
Ho davvero bisogno di aiuto qui! Grazie.
WOW Mi hai salvato la giornata!Non ho mai usato quelle funzioni, usate ora su un UPDATE e ha funzionato. Grazie mille! – Nuno
Grazie per questo! Ho creato un piccolo script php che scorre in tutte le colonne di ogni tabella. Il trucco :) – wiesson
GRAZIE A LOT ABS !!!!! Un sacco di domande SO correlate ma solo questa conteneva la funzione per convertire correttamente in UTF-8 – alds