Кодировка / декодирование символов возвращается? знаки или странные результаты при отправке формы

Я знаю, что есть много подобных сообщений об этом, но до сих пор я не мог решить мою проблему, хотя я прошел через них. Я пытаюсь распечатать точно search keywords когда я ударил Search Кнопка, но, к сожалению, я вижу зашифрованные версии, и я не могу декодировать. Я читаю на utf8_decode а также Iconv но пока не повезло. У меня есть много языков, используемых на моем сайте, но я борюсь только с символами ниже.

Замечания: я использую utf8mb4_unicode_ci как collation в MySQL и в таблицу были вставлены те же ключевые слова, что и Ç, Ğ, İ, Ö, Ş, Ü, ç, ğ, ı, ö, ş, ü поэтому из-за различий в кодировке поиск в большинстве случаев не удастся.

У меня также есть внутренние символы, установленные mb_internal_encoding("UTF-8");

ПОИСК ПО КЛЮЧЕВОМУ СЛОВУ: Ç, Ğ, İ, Ö, Ş, Ü, ç, ğ, ı, ö, ş, ü

SITE

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<form method="post" action="search.php">
Keyword: <input type="text" name="keywords" />
<button type="submit" class="btn btn-default">Search</button>
</form>
</body>
</html>

search.php

var_dump($_POST);
echo $_POST['keywords'];
echo '<br />';
echo utf8_decode($_POST['keywords']);
echo '<br />';
echo iconv("ISO-8859-1", "UTF-8", $_POST['keywords']);

ВЫХОД Когда тег UTF-8 в EXIST

array (size=1)
'keywords' => string 'Ç, Ğ, İ, Ö, Ş, Ü, ç, ğ, ı, ö, ş, ü' (length=46)
Ç, Ğ, İ, Ö, Ş, Ü, ç, ğ, ı, ö, ş, ü
Ç, ?, ?, Ö, ?, Ü, ç, ?, ?, ö, ?, ü
Ç, Ğ, İ, Ö, Ş, Ü, ç, ğ, ı, ö, ş, ü

ВЫХОД, когда UTF-8 тег УДАЛЕНО

// This will also break front-end for certain characters.
array (size=1)
'keywords' => string 'Ç, &#286;, &#304;, Ö, &#350;, Ü, ç, &#287;, &#305;, ö, &#351;, ü' (length=64)
Ç, Ğ, İ, Ö, Ş, Ü, ç, ğ, ı, ö, ş, ü
?, Ğ, İ, ?, Ş, ?, ?, ğ, ı, ?, ş, ?
Ç, Ğ, İ, Ö, Ş, Ãœ, ç, ğ, ı, ö, ş, ü

1

Решение

Вы установили внутреннюю кодировку в PHP? mb_internal_encoding ( «UTF-8»);
Если и интерфейс, и сервер используют UTF-8, проблем не должно быть!

0

Другие решения

Добавление accept-charset="ISO-8859-1" чтобы сформировать элемент решил проблему.

ВЫХОД

array (size=1)
'keywords' => string 'Ç, &#286;, &#304;, Ö, &#350;, Ü, ç, &#287;, &#305;, ö, &#351;, ü' (length=64)

Ç, Ğ, İ, Ö, Ş, Ü, ç, ğ, ı, ö, ş, ü
?, Ğ, İ, ?, Ş, ?, ?, ğ, ı, ?, ş, ?
Ç, Ğ, İ, Ö, Ş, Ãœ, ç, ğ, ı, ö, ş, ü

Замечания: Есть ли у меня mb_internal_encoding("UTF-8"); или нет, это не влияет на результат.

0

Вот ваше решение.

В соответствии с вашими данными, вы смешали строку только символов и HTML-кодированных символов.

Таким образом, чтобы расшифровать их обратно использовать html_entity_decode() функция:

$str = 'Ç, &#286;, &#304;, Ö, &#350;, Ü, ç, &#287;, &#305;, ö, &#351;, ü';
var_dump($str);
var_dump(html_entity_decode($str));
0
По вопросам рекламы [email protected]