Я думаю, что во всех этих ответах упущен один важный момент. Сама Windows использует Windows-латинскую разновидность latin1, поэтому, если вы вставляете некоторые специальные символы (например, асимметричные кавычки) в форму на компьютере с Windows, и она отправляется в поле Unix (или что-нибудь, кроме muckrosoft) (будь то в базу данных или что-то в этом роде) некоторые символы не сопоставляются ни с чем, что понимает система unix, отсюда и запутанные и искаженные символы. Это означает, что даже если у вас есть база данных UTF-8 и вы используете htmlentities, некоторые неприятности все равно пройдут, потому что это символы, которые ОС не распознает - они даже не являются частью UTF-8 - изобретения только для Microsoft. Мне бы очень хотелось узнать о хитром решении: я делаю вручную черный список кодов символов только для Microsoft, с которыми я столкнулся, со списком символов UTF-8 (также вручную), для всех из них создаю str_replace и Тогда вы можете делать с ними все, что захотите - iconv, htmlentities, сохранять прямо в базе данных utf8, это уже не имеет значения.
Я понимаю, что все это немного шатко - зацените http://www.cs.tut.fi/~jkorpela/www/windows-chars.html для превосходного объяснения, которое я изуродовал в краткой форме выше. - Если у кого-то есть лучшее решение (конечно, есть такое!) Того, как PHPify, что объясняет эта статья ... Я хотел бы услышать это!