imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Веб-мастеру > Веб-программирование
Опции темы
Старый 23.10.2007, 08:46     # 1
n0ther
Junior Member
 
Аватар для n0ther
 
Регистрация: 02.04.2005
Сообщения: 80

n0ther Молодецn0ther Молодецn0ther Молодец
Unhappy Кодировка в POST запросе

Есть такая функция на JS

PHP код:
    function addXAJAX(coor_xcoor_y) {
        var 
form = $('objectAdd');
        var 
objName form['objname'];

        if (
$F(objName) == '') {
            
alert ('Не заполнено поле Имя объекта');
            return 
false;
        }

        if (
prevType == '') {
            
alert ('Не выбран тип объекта');
            return 
false;
        }

        var 
pars '';
        for(var 
j=0j<form.lengthj++){
            
pars += form[j].id '=' form[j].value '&';
        }

        
pars += 'type=' prevType '&x=' coor_x '&y=' coor_y;
        var 
voter = new Ajax.Updater('addobjX''addobjX.php', {method'post'parameterspars} );
    } 
и PHP код

PHP код:
<?php
    header
("Content-Type: text/html; charset=cp1251");
        if (isset(
$_POST['objname']) && isset($_POST['type'])) {
            echo (
$objname."<br>");
        }
?>
который выводит абракадабру типа Фыв

не могу понять в чем дело
__________________
2B^|2B
n0ther вне форума  
Старый 23.10.2007, 08:55     # 2
RaZEr
МОД-Оператор ЭВМ
 
Аватар для RaZEr
 
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343

RaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех Гуру
Выводит юникод данные туда где задана ASCII кодировка вроде цп1251.
RaZEr вне форума  
Старый 23.10.2007, 10:38     # 3
n0ther
Junior Member
 
Аватар для n0ther
 
Регистрация: 02.04.2005
Сообщения: 80

n0ther Молодецn0ther Молодецn0ther Молодец
хм, хорошо... на странице откуда я отправляю ajax-запрос стоит кодировка cp1251

пишу
PHP код:
var voter = new Ajax.Updater('addobjX''addobjX.php', {method'post'encoding'cp1251'requestHeader: ['Content-type''application/x-www-form-urlencoded; charset=cp1251'] ,parameterspars} ); 
конкретно указываю кодировку запроса... таже ситуация... видимо проблема еще раньше

добавлено через 38 минут
спасибо, разобрался
__________________
2B^|2B
n0ther вне форума  
Старый 23.10.2007, 13:10     # 4
shuron
Full Member
 
Аватар для shuron
 
Регистрация: 16.09.2003
Сообщения: 793

shuron Луч света в тёмном царствеshuron Луч света в тёмном царствеshuron Луч света в тёмном царствеshuron Луч света в тёмном царствеshuron Луч света в тёмном царстве
Цитата:
Сообщение от n0ther Посмотреть сообщение
добавлено через 38 минут
спасибо, разобрался
ну в чем дело было?
shuron вне форума  
Старый 23.10.2007, 13:33     # 5
n0ther
Junior Member
 
Аватар для n0ther
 
Регистрация: 02.04.2005
Сообщения: 80

n0ther Молодецn0ther Молодецn0ther Молодец
проблема была в том, что не смотря на то что кодировка на странице откуда передается запрос была win1251, данные из формы в POST запросе приходили в php в utf8.

Пришлось в php конвертить utf8 в cp1251. Либо iconv, либо в инете есть пример небольшой функции.

зы Вот если бы "всё" было в utf8, небыло бы такого гемороя
__________________
2B^|2B
n0ther вне форума  
Старый 03.11.2007, 18:24     # 6
ch__
Banned
 
Аватар для ch__
 
Регистрация: 03.11.2007
Адрес: Хайфа
Пол: Male
Сообщения: 2

ch__ Нуль без палочки
Трабл еще и в том, что разные браузеры по-разному работают с кодировкой на уровне JS и форм . Когда-то сталкивался...
ch__ вне форума  
Старый 21.11.2007, 00:21     # 7
uerter
Member
 
Аватар для uerter
 
Регистрация: 07.01.2004
Сообщения: 273

uerter Молодецuerter Молодецuerter Молодец
в РНР можно еще и средством MB делать разные действия с кодировкой если память не изменяет
__________________
Жизнь движняк
uerter вне форума  
Старый 21.11.2007, 10:46     # 8
RaZEr
МОД-Оператор ЭВМ
 
Аватар для RaZEr
 
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343

RaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех Гуру
mbstring просто перегружает часть ф-ий чтобы substr, strlen и другие работали посимвольно а не побайтно. Для конвертации - iconv.
RaZEr вне форума  
Старый 22.11.2007, 23:57     # 9
uerter
Member
 
Аватар для uerter
 
Регистрация: 07.01.2004
Сообщения: 273

uerter Молодецuerter Молодецuerter Молодец
я имел в виду
mb_convert_encoding

2 RaZEr
на счет mbstring хез... не пользовался
но то что выше указал довольно прилично работает!
__________________
Жизнь движняк
uerter вне форума  
Старый 25.11.2007, 15:57     # 10
Den+
Newbie
 
Регистрация: 08.07.2004
Сообщения: 14

Den+ Нуль без палочки
c AJAX'ом вообще лучше всегда работать только в utf8, если в 1251 - то бывают глюки у некоторых браузеров
Den+ вне форума  
Старый 29.11.2007, 11:12     # 11
apoc
Junior Member
 
Аватар для apoc
 
Регистрация: 17.08.2003
Адрес: Украина
Сообщения: 150

apoc Реально крут(а)apoc Реально крут(а)apoc Реально крут(а)apoc Реально крут(а)
Два дня искал выход из такой же ситуации оказалось, что просто нужно брать и делать конвертацию из УТФ-а. А так как мне нужно не только русские символы но и украинские, то пришлось лепить самому конвертор. Вот делюсь, лучше в нете не нашел. Топорно, зато есть все символы!!!
PHP код:
function Utf8Win($text)
{
    global 
$UtfTable,$WinTable;
    if (!isset(
$UtfTable))
    {
        for(
$i=0;$i<=255;$i++) { if ($i != 152) { $WinTable[] = chr($i); } }
        
$UtfTable = array(chr(0),chr(1),chr(2),chr(3),chr(4),chr(5),chr(6),chr(7),chr(8),chr(9),chr(10),chr(11),chr(12),chr(13),chr(14),chr(15),chr(16),chr(17),chr(18),chr(19),chr(20),chr(21),chr(22),chr(23),chr(24),chr(25),chr(26),chr(27),chr(28),chr(29),chr(30),chr(31),chr(32),chr(33),chr(34),chr(35),chr(36),chr(37),chr(38),chr(39),chr(40),chr(41),chr(42),chr(43),chr(44),chr(45),chr(46),chr(47),chr(48),chr(49),chr(50),chr(51),chr(52),chr(53),chr(54),chr(55),chr(56),chr(57),chr(58),chr(59),chr(60),chr(61),chr(62),chr(63),chr(64),chr(65),chr(66),chr(67),chr(68),chr(69),chr(70),chr(71),chr(72),chr(73),chr(74),chr(75),chr(76),chr(77),chr(78),chr(79),chr(80),chr(81),chr(82),chr(83),chr(84),chr(85),chr(86),chr(87),chr(88),chr(89),chr(90),chr(91),chr(92),chr(93),chr(94),chr(95),chr(96),chr(97),chr(98),chr(99),chr(100),chr(101),chr(102),chr(103),chr(104),chr(105),chr(106),chr(107),chr(108),chr(109),chr(110),chr(111),chr(112),chr(113),chr(114),chr(115),chr(116),chr(117),chr(118),chr(119),chr(120),chr(121),chr(122),chr(123),chr(124),chr(125),chr(126),chr(127),chr(208).chr(130),chr(208).chr(131),chr(226).chr(128).chr(154),chr(209).chr(147),chr(226).chr(128).chr(158),chr(226).chr(128).chr(166),chr(226).chr(128).chr(160),chr(226).chr(128).chr(161),chr(226).chr(130).chr(172),chr(226).chr(128).chr(176),chr(208).chr(137),chr(226).chr(128).chr(185),chr(208).chr(138),chr(208).chr(140),chr(208).chr(139),chr(208).chr(143),chr(209).chr(146),chr(226).chr(128).chr(152),chr(226).chr(128).chr(153),chr(226).chr(128).chr(156),chr(226).chr(128).chr(157),chr(226).chr(128).chr(162),chr(226).chr(128).chr(147),chr(226).chr(128).chr(148),chr(226).chr(132).chr(162),chr(209).chr(153),chr(226).chr(128).chr(186),chr(209).chr(154),chr(209).chr(156),chr(209).chr(155),chr(209).chr(159),chr(194).chr(160),chr(208).chr(142),chr(209).chr(158),chr(208).chr(136),chr(194).chr(164),chr(210).chr(144),chr(194).chr(166),chr(194).chr(167),chr(208).chr(129),chr(194).chr(169),chr(208).chr(132),chr(194).chr(171),chr(194).chr(172),chr(194).chr(173),chr(194).chr(174),chr(208).chr(135),chr(194).chr(176),chr(194).chr(177),chr(208).chr(134),chr(209).chr(150),chr(210).chr(145),chr(194).chr(181),chr(194).chr(182),chr(194).chr(183),chr(209).chr(145),chr(226).chr(132).chr(150),chr(209).chr(148),chr(194).chr(187),chr(209).chr(152),chr(208).chr(133),chr(209).chr(149),chr(209).chr(151),chr(208).chr(144),chr(208).chr(145),chr(208).chr(146),chr(208).chr(147),chr(208).chr(148),chr(208).chr(149),chr(208).chr(150),chr(208).chr(151),chr(208).chr(152),chr(208).chr(153),chr(208).chr(154),chr(208).chr(155),chr(208).chr(156),chr(208).chr(157),chr(208).chr(158),chr(208).chr(159),chr(208).chr(160),chr(208).chr(161),chr(208).chr(162),chr(208).chr(163),chr(208).chr(164),chr(208).chr(165),chr(208).chr(166),chr(208).chr(167),chr(208).chr(168),chr(208).chr(169),chr(208).chr(170),chr(208).chr(171),chr(208).chr(172),chr(208).chr(173),chr(208).chr(174),chr(208).chr(175),chr(208).chr(176),chr(208).chr(177),chr(208).chr(178),chr(208).chr(179),chr(208).chr(180),chr(208).chr(181),chr(208).chr(182),chr(208).chr(183),chr(208).chr(184),chr(208).chr(185),chr(208).chr(186),chr(208).chr(187),chr(208).chr(188),chr(208).chr(189),chr(208).chr(190),chr(208).chr(191),chr(209).chr(128),chr(209).chr(129),chr(209).chr(130),chr(209).chr(131),chr(209).chr(132),chr(209).chr(133),chr(209).chr(134),chr(209).chr(135),chr(209).chr(136),chr(209).chr(137),chr(209).chr(138),chr(209).chr(139),chr(209).chr(140),chr(209).chr(141),chr(209).chr(142),chr(209).chr(143));
    }
    
$text str_replace($UtfTable,$WinTable,$text);
    return 
$text;

Кстати, спасибо знаете куда говорить )))
__________________
His name is spelled A-P-O-C, with a C - not APOK, because it originates from the word 'apocalypse'...
apoc вне форума  
Старый 29.11.2007, 12:17     # 12
uerter
Member
 
Аватар для uerter
 
Регистрация: 07.01.2004
Сообщения: 273

uerter Молодецuerter Молодецuerter Молодец
Цитата:
Сообщение от Den+ Посмотреть сообщение
c AJAX'ом вообще лучше всегда работать только в utf8, если в 1251 - то бывают глюки у некоторых браузеров
и в каких это браузерах?

apoc,
хм .... интересно ... попробуем
__________________
Жизнь движняк
uerter вне форума  
Старый 03.12.2007, 01:38     # 13
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
apoc, а стандартные iconv, recode чем плохи? В чем смысл очередного велосипеда?
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 03.12.2007, 10:34     # 14
apoc
Junior Member
 
Аватар для apoc
 
Регистрация: 17.08.2003
Адрес: Украина
Сообщения: 150

apoc Реально крут(а)apoc Реально крут(а)apoc Реально крут(а)apoc Реально крут(а)
"да и нет тут смысла... его вообще нет..." (с) но в данном случае это "соломинка", которая иногда просто нужна, ну вот не включен iconv и нет перекодировки... упс... и сайт не пашет. кстати, я думаю, все таки, что в моем посте (с примером) больше смысла, чем в вашем (с претензиями), - без обид.
__________________
His name is spelled A-P-O-C, with a C - not APOK, because it originates from the word 'apocalypse'...
apoc вне форума  
Старый 01.02.2008, 16:30     # 15
michaela
Guest
 
Сообщения: n/a

2 apoc
мдя ... функция конечно норм

на счет темы в целом
лучше всего работать с utf и тогда никаких проблем ни у кого не будет
 
Старый 12.05.2008, 00:39     # 16
lyolik1
Newbie
 
Регистрация: 29.12.2006
Сообщения: 10

lyolik1 Нуль без палочки
Работать с utf8 - это хорошо. Но иногда желательно, чтобы даынные передающиеся AJAX'ом и просто при сабмите формы, обрабатывались одинаково.
Есть одно наблюдение по работе в JavaScript со строчками в разной кодировке. Обычно при отправке AJAX'ом строки кодируются функцией encodeURIComponent - тогда действительно будет отправлен utf8 (javascript сам сделает преобразование кодировки), если же использовать другую функцию - escape, то преобразования кодировки не будет. По моим наблюдениям, описанное поведение верно, для всех современных браузеров.
lyolik1 вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 16:34.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.