$_POST будет конвертировать из utf-8 в ä ö ü и т.д.

Я здесь новичок, поэтому прошу прощения, если делаю что-то не так.

У меня есть форма, которая отправляет пользовательский ввод на другую страницу. Ожидается, что пользователь введет ä, ö, é и т.д.... Я разместил в документе все следующее:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
header('Content-Type:text/html; charset=UTF-8');
<form action="whatever.php" accept-charset="UTF-8">

Я даже пробовал:

ini_set('default_charset', 'UTF-8');

Когда загружается другая страница, мне нужно проверить, что ввел пользователь с помощью чего-то вроде:

if ( $_POST['field'] == $check ) {
  ...
}

Но если он введет что-то вроде 'München', PHP сравнит 'München' с 'München' и никогда не выдаст TRUE, хотя должен. Поскольку везде указано UTF-8, я предполагаю, что сервер конвертирует в что-то другое (Windows-1252, как я читал в другой теме), потому что он не поддерживает или не настроен на UTF-8. Я использую Apache на локальном сервере до загрузки в продакшн; я не менял (и не знаю, как это сделать) никаких настроек по умолчанию. Я работаю на Windows 7, редактирую с помощью Notepad++, кодируя свои файлы в ANSI. Если я bin2hex('München'), я получаю '4dc3bc6e6368656e'.

Если я echo $_POST['field'];, то отображается 'München' правильно.

Я везде искал объяснение, все, что я нашел, это то, что я должен включить те теги/заголовки, которые у меня уже есть.

Любая помощь будет очень признательна.

13
задан lungov 28 January 2012 в 16:31
поделиться