Я смущен поведением utf8_decode () и просто хочу немного разъяснений.Я надеюсь, что все в порядке.
Вот простая форма HTML, которую я использую, чтобы захватить некоторый текст и сохранить его в моей базе данных MySQL (которая использует сопоставление utf8_general_ci):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<form action="update.php" method="post" accept-charset="utf-8">
<p>
Title: <input type="text" name="title" id="title" accept-charset="utf-8" size="75" value="" />
</p>
<p>
<input type="submit" name="submit" value="Submit" />
</p>
</form>
</body>
</html>
КакВы можете видеть, что я кодировал это с charset = utf8 в соответствующих местах.Мы принимаем текст, который содержит диакритические знаки (например, ñ, ó и т. Д.).В конце мы запускаем небольшой скрипт для всего ввода текста, чтобы проверить наличие диакритических знаков и изменить их на HTML-сущности (например, ñ становится ñ).
Когда входные данные получены моим сценарием, мне сначала нужно выполнить utf8_decode ($ input), а затем запустить мой маленький сценарий, чтобы проверить и изменить диакритические знаки по мере необходимости.Все отлично работаетМне любопытно, почему я должен запустить декодирование на этом входе.Я понимаю, что utf8_decode преобразует строку, закодированную в UTF-8, в ISO-8859-1.Я хочу убедиться - , хотя все работает нормально (или я так думаю) - что я не делаю что-то нехорошее, что потом настигнет меня.Например, я отправляю символы в кодировке ISO-8859-1 для хранения в моей базе данных, которая настроена для хранения / обслуживания символов UTF-8.Должен ли я сделать что-то вроде запуска utf8_encode () в строке, которую возвращает мой скрипт diacritics-to-entity?Например:
$string = utf8_decode($string);
$search = explode(",","À,È,Ì,Ò,Ù,à,è,ì,ò,ù,Á,É,Í,Ó,Ú,Ý,á,é,í,ó,ú,ý,Â,Ê,Î,Ô,Û,â,ê,î,ô,û,Ã,Ñ,Õ,ã,ñ,õ,Ä,Ë,Ï,Ö,Ü,Ÿ,ä,ë,ï,ö,ü,ÿ,Å,å,Æ,æ,ß,Þ,þ,ç,Ç,Œ,œ,Ð,ð,Ø,ø,§,Š,š,µ,¢,£,¥,€,¤,ƒ,¡,¿");
$replace = explode(",","À,È,Ì,Ò,Ù,à,è,ì,ò,ù,Á,É,Í,Ó,Ú,Ý,á,é,í,ó,ú,ý,Â,Ê,Î,Ô,Û,â,ê,î,ô,û,Ã,Ntilde;,Õ,ã,ñ,õ,Ä,Ë,Ï,Ö,Ü,Ÿ,ä,ë,ï,ö,ü,ÿ,Å,å,Æ,æ,ß,Þ,þ,ç,Ç,Œ,œ,Ð,ð,Ø,ø,§,Š,š,µ¢,£,¥,€,¤,ƒ,¡,¿");
$new_input = str_replace($search, $replace, $string);
return utf8_encode($new_input); // right now i just return $new_input.
Цените любые идеи, которые кто-либо может предложить по этому поводу.