Сравнение строки в кодировке utf8 в php - PullRequest
0 голосов
/ 28 декабря 2011

Я пытаюсь сравнить значение, отправленное как POST, с внутренней строкой.Они оба в кодировке utf8.Это код

echo $_POST["province"] . "\n";
setlocale(LC_COLLATE, "fr_CA");
echo strcoll($_POST["province"], "Québec");

Этот код повторяет следующее:

Québec
-38

strcoll должен возвращать 0, если строка соответствует, а не -38.Другими словами, сравнение не удается.Как сравнить две строки utf8, которые идентичны читателю, но могут быть закодированы по-разному?Я попробовал Normalizer: normalize, общий оператор "==", посмотрел на многобайтовое расширение php (но, похоже, нет функций сравнения ??), и пока у меня ничего не получалось.

1 Ответ

4 голосов
/ 28 декабря 2011
  1. Убедитесь, что вы сохранили свои файлы PHP как UTF-8, это действительно важно.
  2. Убедитесь, что ваша форма HTML действительно отправляет данные UTF-8 на сервер.
  3. Если ваш PHP не использует UTF-8 в качестве внутренней кодировки, вам, возможно, придется использовать utf8_decode, чтобы убедиться, что проверяемые строки находятся в той же кодировке.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...