今日だけUTF8にUTF8テーブルの上にlatin1の文字を変換します列も "utf8_unicode_ci"です。私のPHPスクリプトにはmb_internal_encoding('UTF-8');
があり、私のすべてのPHPファイルはUTF-8としてエンコードされています。MySQLの私は、私は私のPHPスクリプトでこれを欠けていたことに気づい
だから、今まで、私は発音区別記号付きの何か、例えば、 "INSERT" 毎回:
mysql_query('INSERT INTO `table` SET `name`="Jáuò Iñe"');
'名前' の内容は、この場合には、次のようになります。Jáuò Iñe
。
PHPとMySQLの間で文字セットを修正したので、新しいINSERTが正しく格納されるようになりました。しかし、私は現時点で "混乱している"古い行をすべて修正したい。私はすでに多くのことを試みましたが、最初の "違法な"文字の文字列はいつも壊れています。ここに私の現在のコードは次のとおりです。
$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'].'"');
}
それが「UPDATE」の予想文字で、文字列は文字「A」の後に切り捨てられますことを除いて。つまり、その文字とそれに続く文字は文字列に含まれません。また
、私もの間、いくつかの文字セットをテストしても、//無視し、// TRANSLIT
で、同じことを行います「のiconv()」(それはコードにコメントしている)でテストISO-8859- 1およびISO-8859-15を参照のこと。
私は本当にここで助けが必要です!ありがとうございました。
を使用!私は決してUPDATEで使用されたこれらの関数を使用したことはありませんでした。どうもありがとうございました! – Nuno
ありがとう!私は各テーブルのすべての列をループする小さなPHPスクリプトを構築しました。トリックをしました:) – wiesson
ありがとうございました!!!!!関連する多くの質問がありますが、これにはUTF-8に正しく変換する関数が含まれています – alds