AJAX + Opera + глюк с кодировкой.

12
Антон Лавеев
На сайте с 31.10.2005
Offline
425
1574

Гугление дало мне вот что:

Посредством ajax передаем содержание textarea, которое расположено на html-ной странице в кодировке Windows-1251 скрипту Perl на Апач.

При передаче из FF и IE скрипт получает нормальный русский текст, но что касается Oper'ы, то из нее текст приходит в непонятной кодировке?

Подскажите, как перевести средствами JS для оперы отправляемый текст в кодировку Windows-1251?

У меня ситуация похожая, только input type text и php. Я так понял что Опера принудительно кодирует реквест в utf, но почему тогда iconv в скрипте приёмнике ничего не даёт, всё равно абракадабра получается. Зачем-то попробовал decodeURIComponent в жабаскрипте - не помогло. Как с этим бороться?

☠️☠️☠️
LEOnidUKG
На сайте с 25.11.2006
Offline
1726
#1

Ajax всегда стандартно передаёт в UTF-8.

Поэтому посылаем (WIN1251->UTF8)

Принимаем (UTF8->WIN1251)

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
Антон Лавеев
На сайте с 31.10.2005
Offline
425
#2

LEOnidUKG, хм, таки непонятно, почему тогда безо всяких прекодировок осёл и фф срабатывают, а опера заносит в базу кракозябры... Либо я чего-то не понимаю.

LEOnidUKG
На сайте с 25.11.2006
Offline
1726
#3
Tarry:
LEOnidUKG, хм, таки непонятно, почему тогда безо всяких прекодировок осёл и фф срабатывают, а опера заносит в базу кракозябры... Либо я чего-то не понимаю.

такова жизнь, поэтому лучше перекодировать :)

Антон Лавеев
На сайте с 31.10.2005
Offline
425
#4
LEOnidUKG:
такова жизнь, поэтому лучше перекодировать

Ну ок, но как перекодировать тогда? Я же говорю, переменная перекодированная посредством iconv всё равно какая-то глючная. Чушь какая-то. Сервер настроен на 1251.

LEOnidUKG
На сайте с 25.11.2006
Offline
1726
#5

У файла обработчика попробуйте прописать в самом начале:

header("Content-type: text/html; charset=windows-1251");

Антон Лавеев
На сайте с 31.10.2005
Offline
425
#6
LEOnidUKG:
У файла обработчика попробуйте прописать в самом начале:
header("Content-type: text/html; charset=windows-1251");

Да там просто голый php код, проверяющий переменные и добавляющий их в базу. :(

LEOnidUKG
На сайте с 25.11.2006
Offline
1726
#7
Tarry:
Да там просто голый php код, проверяющий переменные и добавляющий их в базу. :(

у Вас это на локалке? Просто если бы доступ дали, то посмотрел бы и быстрее решился вопрос :)

Антон Лавеев
На сайте с 31.10.2005
Offline
425
#8
LEOnidUKG:
у Вас это на локалке? Просто если бы доступ дали, то посмотрел бы и быстрее решился вопрос

Да нет, в работе давно, просто замучали меня эти проблемы... Вот что я имею, выкладываю.

Жабаскрипт:



function pushem(sid)
{

var lt=document.getElementById("vtitle").value;
lt=decodeURIComponent(lt);
var lu=document.getElementById("vurl").value;
if ((!lt) || (!lu) ){
alert('Не заполнено обязательной поле!');
exit;

}


document.getElementById("viplinks").innerHTML=document.getElementById("viplinks").innerHTML+"<li> <a href='"+lu+"'>"+lt+"</a>";

makeAJAXCall(sUrl2+"&sid="+sid+"&lt="+lt+"&lu="+lu);


}


makeAJAXCall там стандартный, откуда-то спёртый, в любом случае всё работает.

Приёмник php:


session_start();
include "lib.php";
include "bd.php";
include "libNew.php";
connect();
$sid=intval($sid);
$lt=htmlspecialchars($lt);
//$lt=iconv("UTF-8", "windows-1251", $lt);

$lu=htmlspecialchars($lu);
if(isset($_SESSION['validnfuser']) OR isset($_SESSION['adminnfuser'])){
$sqlc="select sid from NF_VIP_LINKS where sid=$sid";
$resultc = mysql_query($sqlc) or die(mysql_error());
$row_countc = mysql_num_rows($resultc);
if ($row_countc >=5){
exit;
}
else {
$sql="insert into NF_VIP_LINKS VALUES(NULL,$sid,'$lu','$lt')";
$result = mysql_query($sql) or die(mysql_error());

LEOnidUKG
На сайте с 25.11.2006
Offline
1726
#9

а попробуйте не записать, а вывести, что он на $lt покажет

Антон Лавеев
На сайте с 31.10.2005
Offline
425
#10
LEOnidUKG:
а попробуйте не записать, а вывести, что он на $lt покажет

В опере мусор, остальные выводят то что нужно :)

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий