I have to redesign a class where (amongst other things) UTF-8 strings are double-encoded wrongly:
$string = iconv('ISO-8859-1', 'UTF-8', $string);
:
$string = utf8_encode($string);
These faulty strings have been saved into multiple table fields all over a MySQL database. All fields being affected use collation utf8_general_ci
.
Usually I'd setup a little PHP patch script, looping thru the affected tables, SELECTing the records, correct the faulty records by using utf8_decode()
on the double-encoded fields and UPDATE them.
As I got many and huge tables this time, and the error only affects german umlauts (??ü???ü), I'm wondering if there's a solution smarter/faster than that.
Are pure MySQL solutions like the following safe and recommendable?
UPDATE `table` SET `col` = REPLACE(`col`, '?¤', '?');
Any other solutions/best practices?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…