[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: русский язык в AJAX
Lorado
Код
   function edit_cat_ok(id) {
    var edit = document.getElementById("edit").value;
    var url = "change_cat.php";
    var param = "title=" + edit + "&id=" + id;
       request.open("POST", url, true);
    request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    request.setRequestHeader("Content-length", param.length);
    request.setRequestHeader("Connection", "close");
    request.onreadystatechange = updatePage;
    request.send(param);
   }

change_cat.php
Код
<?php
include("../config.php");
$title = $_POST['title'];
$id = $_POST['id'];

$update_cat = "UPDATE `cat` SET `title`='$title' WHERE `id`='$id'";
if (MYSQL_QUERY($update_cat)) print "1";
?>


Беда вот в чем: когда я посылаю значение латинскими буквами или цифрами, всё работает отлично. Когда пишу русскими буквами, в БД записываются карякули.
например: edit = привет
вот что записывает в БД: привет

Что делать?



Спустя 6 часов, 3 минуты, 52 секунды (31.07.2008 - 20:51) linedmk написал(а):
Дело в том что аякс отправляет данные только в кодировке utf-8 независимо какая кодировка используется на сайте. Возможно у Вас кодировка отличается от utf-8. Поэтому в аяксе нужно данные преобразовать функцией encodeURIComponent() или encodeURI()
Код
var param = "title=" + encodeURIComponent(edit) + "&id=" + encodeURIComponent(id);

На сервере преобразовать обратно кодировку нужных ПОСТ-ов, например в windows-1251
Код
$title=iconv('UTF-8', 'windows-1251',$_POST["title"]);

Спустя 37 минут, 19 секунд (31.07.2008 - 21:29) Lorado написал(а):
Огромное спасибо!
Только вот еще не понял encodeURIComponent() кодирует в UTF-8?

Спустя 2 часа, 6 минут (31.07.2008 - 23:35) linedmk написал(а):
Функция encodeURIComponent() кодирует строку для использования в URL. То есть символы которые недопускается использовать в URL кодируются в крокозябры. Посмотри
Код
alert(encodeURIComponent("какой-нибудь текст"));

Крокозябры будут состоять из % и буковок с циферками. Функции encodeURIComponent() и encodeURI() отличаются набором символов которые они преобразовывают. encodeURIComponent больше символов кодирует. например символ & он кодирует.


_____________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.