Dopiero dzisiaj zdałam sobie sprawę, że brakowało mi tego w moich skryptów PHP:MySQL - Konwersja znaków latin1 na stole UTF8 w UTF8
mysql_set_charset('utf8');
Wszystkie moje tabele są InnoDB, zestawień „utf8_unicode_ci”, a cała moja VARCHAR kolumny to także "utf8_unicode_ci". Mam mb_internal_encoding('UTF-8');
na moich skryptach PHP, a wszystkie moje pliki PHP są zakodowane jako UTF-8.
Tak, do tej pory, za każdym razem "INSERT" coś ze znakami diakrytycznymi, przykład:
mysql_query('INSERT INTO `table` SET `name`="Jáuò Iñe"');
Zawartość 'name' byłoby w tym przypadku: Jáuò Iñe
.
Ponieważ poprawiłem zestaw znaków między PHP i MySQL, nowe INSERTy są teraz poprawnie zapisywane. Jednak chcę naprawić wszystkie starsze wiersze, które są "pomieszane" w tej chwili. Próbowałem już wielu rzeczy, ale zawsze łamie struny na pierwszej "nielegalnej" postaci. Tu jest mój bieżący kod:
$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'].'"');
}
It „update” sz oczekiwanych znaków, chyba że ciąg zostanie obcięty po znaku „A”. Mam na myśli, że ta postać i następujące znaki nie są zawarte w łańcuchu.
Również badania z "iconv()" (który jest skomentował kodu) robi to samo, nawet z // IGNORE i // translit
ja również testowane kilka zestawów znaków, między ISO-8859- 1 i ISO-8859-15.
Naprawdę potrzebuję pomocy tutaj! Dziękuję Ci.
WOW Uratowałeś mój dzień!Nigdy nie używałem tych funkcji, używanych teraz na AKTUALIZACJI i działało. Dziękuję Ci bardzo! – Nuno
Dzięki za to! Zbudowałem mały skrypt php, który przechwytuje wszystkie kolumny w każdej tabeli. Udało się :) – wiesson
DZIĘKI DUŻO ABS !!!!! Wiele powiązanych pytań SO, ale tylko ta zawierała funkcję, aby poprawnie przekonwertować do UTF-8 – alds