Делимся секретами создания сайтов

Кодировки(мать их……)

У меня такая проблема: Отправляю данные на сервак POST-ом, и всё бы хорошо, да только с русскими буквами работает не очень корректно. Перепробовал всё. Зашёл в тупик. Помогите разобраться, что я не так делаю???

Сам POST у клиента
request.open("POST", url, true);
request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
request.send("red_text="+red_text+);
------------------------------------------------------------------------
И на серваке:
$red_text=$_POST["red_text"];
$red_text=iconv("UTF-8", "windows-1251", $red_text);
echo $red_text;

PS Вместо iconv пробовал урлдекодед, чото тоже не работает (((((((((

Ответы: 10 → “Кодировки(мать их……)”

  1. Мишель Елизаров Ответить

    давно как то встречался с такой же траблой…
    для начала посмотри, в какой кодировке вообще приходит этот $_POST["red_text"]

  2. Константин Дюжих Ответить

    По идее должен в UTF-8… Так как(charset=UTF-8), и пост тож вроде кодирует UTF-8.

  3. Dimon Sorokinus Ответить

    попробуй windows-1251,с YTF у меня тоже часто проблемы были

  4. Мишель Елизаров Ответить

    можно делать все в utf и тогда проблем вообще не будет

  5. Константин Дюжих Ответить

    #4 А зарзве POST передаст на сервак строку в 1251???
    #5 Проблем не будет, кроме отображаэения русских букв((((

  6. Юрий Щербачук Ответить

    Перед отправкой закодируй в UTF-8
    $string = mb_convert_encoding($string,"UTF-8","CP1251");
    А на серваке уже наоборот
    $string = mb_convert_encoding($_POST["string"],"CP1251","UTF-8");

    или попробуй просто поменять iconv на mb_convert_encoding
    Если не поможет напиши

  7. Константин Дюжих Ответить

    #7 Спасибо, заработало, только почему тоу меня на локальной машине не хочет работать, пишет ошибку: Fatal error: Call to undefined function: mb_convert_encoding() in … А на серваке всё работает отлично!
    PS Закодировать функцией mb_convert_encoding() перед отправкой невыйдет, так как запрос формирую явой (((

  8. Юрий Щербачук Ответить

    > PS Закодировать функцией mb_convert_encoding() перед отправкой невыйдет, так как запрос формирую явой (((

    Да, я уже понял.

  9. Дмитрий Шевченко Ответить

    попробуй encodeURI(text);

    Метод encodeURI заменяет все символы, исключая следующие, соответствующими им UTF-8 escape-последовательностями.

  10. Андрей Вольберг Ответить

    Fatal error: Call to undefined function: mb_convert_encoding() in …
    ———————

    В Денвере не установлено расширение mb_string. Поставьте заглушку на локальном (набор пустых функций), а отлаживайте работу с юникодными строками на сервере.

Ответить