Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Платёжные системы и расчёты через Интернет > Webmoney Merchant и кодировка


Автор: trix 10.12.2007, 17:52
Есть такой параметр как LMI_PAYMENT_DESC, это описание товара. сайт у меня на utf-8 и строка которую я передаю в этот параметр тоже UTF-8.
а страница оплаты, куда направляются все данные о платеже https://merchant.webmoney.ru/lmi/payment.asp в кодировке windows-1251.
если я этот параметр передаю просто так, то на той странице описание товара написано краказяброй(естественно, кодировки же разные).
а если я делаю такой код $nmz = mb_convert_encoding($nmz,'windows-1251','utf-8'); т.е. перевожу кодировку в ту что на той странице, то это описание еще большая краказябра(чего я понять немогу). уже незнаю что деалать, помогите плиз.
($nmz это переменная текст которой присваивается параметру LMI_PAYMENT_DESC).

Автор: trix 13.12.2007, 03:34
Порыскал по просторам сети в поисках решения как оказывается весьма популярной проблемы и нашел один единственный выход, который и реализуют все у кого возникла данная ситуация. перевел весь сайт в кодировку windows-1251.

Автор: mrsol 1.4.2008, 20:30
А в чём собственно проблема то?
Учите хтмл переде тем как программировать начинать.
<form accept-charset="cp1251" action="https://merchant.webmoney.ru/lmi/payment.asp" method="POST">
Это работает на utf-8 страницах и деск не надо переводить в сп1251, нужно оставить в утф.

ЗЫ. Пришлось даже зарегиться чтобы ответить.

Автор: Serkys 5.5.2008, 15:56
mrsol, поздновато ты ответил, четыре месяца прошло smile
Спасибо тебе, меня твой ответ очень выручил.

Насчёт "учите HTML" - довольно спорно. Я веб-программист, и мне совершенно не хочется лезть в дебри смежной, но всё же далёкой от меня области и учиться верстать. Мне программировать интереснее и полезнее, именно это есть моя работа, а ради решения одной проблемы в месяц, которую можно выгуглить или спросить на форуме, учить HTML мне совершенно не хочется. Лучше я за это время стану ещё лучшим программистом, чем неумелым верстальщиком.

Автор: mrsol 6.5.2008, 13:28
Цитата(Serkys @ 5.5.2008,  15:56)
mrsol, поздновато ты ответил, четыре месяца прошло smile
Спасибо тебе, меня твой ответ очень выручил.

Насчёт "учите HTML" - довольно спорно. Я веб-программист, и мне совершенно не хочется лезть в дебри смежной, но всё же далёкой от меня области и учиться верстать. Мне программировать интереснее и полезнее, именно это есть моя работа, а ради решения одной проблемы в месяц, которую можно выгуглить или спросить на форуме, учить HTML мне совершенно не хочется. Лучше я за это время стану ещё лучшим программистом, чем неумелым верстальщиком.

4 месяца потому-что больше вообще похожих тем небыло.  И решил ответить тут, чтобы другие находили.
А вот по поводу 
Цитата
Насчёт "учите HTML" - довольно спорно. .... 
 Я с Вами могу поспорить. Сам являюсь разработчиком ПО для вэба и достаточно давно, и поэтому знаю о чём говорю.
Вы этим постом сказали примерно следующее. Я создаю двигатели для машин, а как у неё крутяться колеса, и что такое вообще машина, мне это не нужно. 
И это не смежная область. Если конечно вы не занимается чисто разработкой серверных систем на рыныры, которые не выходят в вэб. 
Базовые знания хтмылы и протокола передачи хттпы нужно знать любому программисту, который хочет писать не только хоме паги.

ПыСы. Извиняюсь если кого зацепили или обидел.



Автор: Serkys 18.5.2008, 14:15
Цитата(mrsol @  6.5.2008,  14:28 Найти цитируемый пост)
Вы этим постом сказали примерно следующее. Я создаю двигатели для машин, а как у неё крутяться колеса, и что такое вообще машина, мне это не нужно. 

Некорректное сравнение. Как всё работает я стремлюсь узнать как можно лучше. Но желания изучать HTML у меня нет никакого. Про приведённый выше "accept-charset" и подобные ему вещи знать надо, но я не вижу необходимости серверному программисту вдаваться в подробности клиентских технологий. Если проект серьёзный, этим занимается верстальщик/клиентский программист, я лучше проконсультируюсь с ними или посмотрю в инете.

Автор: trix 9.7.2008, 05:25
Цитата(mrsol @  1.4.2008,  20:30 Найти цитируемый пост)
А в чём собственно проблема то?

вообще-то на таких форумах спрашивают именно за тем, чтоб учится.
честно говоря уже ДОСТАЛИ люди, которых спрашиваешь, а они посылают тебя несправедливо. я ж не пришел я вопросом типа "напишите все за меня"...
но это все имхо и оффтоп.


mrsol, спасибо за ответ, но я не считаю что "accept-charset" это азы, так как очень не много  народу о нем знают.

зы Извиняюсь если кого зацепили или обидел  smile 

зыы считаю что тему можно закрыть, так как сейчас флуд пойдет.

Автор: mrsol 9.7.2008, 12:39
Наверное хочет пофлудить мне  smile 
Извеняюсь если кого обидел или обижу, но

Цитата(Serkys @  18.5.2008,  14:15 Найти цитируемый пост)
Некорректное сравнение. Как всё работает я стремлюсь узнать как можно лучше. Но желания изучать HTML у меня нет никакого. Про приведённый выше "accept-charset" и подобные ему вещи знать надо, но я не вижу необходимости серверному программисту вдаваться в подробности клиентских технологий. Если проект серьёзный, этим занимается верстальщик/клиентский программист, я лучше проконсультируюсь с ними или посмотрю в инете.

Ну вот допустим я, в своё время написал автоматический обменный пункт. Но так как писал сам, то пришлось писать и сервеную часть самому и морду. Конечно если работаеш в команде и у тебя чисто надо сделать нормальную логику, апи, не пробиваемость в никаких случаях, то да это знать и не нужно, ВООБЩЕ НЕ НУЖНО. Если Вы серверный программист и отдаете допустим данные формы по апи некоторой морде, то морда сама должна состовлять форму с учетом этих данных и Вы к кодировке не имеете никакого отношения. Хотя может логика быть разной и вы можете отдавать сразу форму, которую морда должна показать клиенту, но это не есть гуд, правда и это не относится к данной теме.
Далее, я тоже во много серверный программер, управление голосовыми каналами, управление всякого рода железками. Очень много работают с платежными системами. И это всё на ПХП.

Но ко всему вышесказанному, могу о себе сказать следующее.
Данную тему мне показал товариш, он тоже не мог справится с данной проблемой. И решение я тоже не знал (как дефакто, я стараюсь все дескрипшены на любые платежные системы писать в транслите), и мне всего понадобилось 15 минут на обдумавание почему так получается, ещё пару минут на получения знания о том что есть возможность передавать accept-charset, ещё пару минут на проведения тестов и всё.

Я наверное не совсем правильно выразился, или мой пост не правильно поняли.
Цитата(mrsol @  1.4.2008,  20:30 Найти цитируемый пост)
Учите хтмл переде тем как программировать начинать.

Тут я имел введу, что нужно знать нормальные базовый знания хтмл, и если ты их знаеш, то знаеш куда нужно копать в поисках решения. Понятное дело что нельзя полностью знать тот-же хтмл или тот-же рыныры. Но если у тебя заложены хорошие базовые знания и есть логическое мышление (а для программера это обязательно), то ответ можно всегда найти.

Цитата(Serkys @  5.5.2008,  15:56 Найти цитируемый пост)
Насчёт "учите HTML" - довольно спорно. Я веб-программист, и мне совершенно не хочется лезть в дебри смежной, но всё же далёкой от меня области и учиться верстать.

Так всё таки вэб программист или же серверный программист? И формы для вэб программиста и всё что с ними связанно, как раз не смежная часть, а относится непосредственно к программингу. Или вы хотите сказать, что дизайнер или версталшик, навоял вам форму, подставив какуе-то белеберду в названия переменныхи и в актион, и Вы как программист будет работать с этими переменными, потому как это работа версталшика и Вы туда не лезите?


Автор: Evgeni68 24.10.2008, 08:48
Кстати accept-charset не работает в IE:)

Автор: point999 23.12.2008, 16:24
 У меня та же проблема: нужно чтобы ie отправлял данные из формы в заданой кодировке (windows-1251), чтобы не переводить весь сайт (который в utf-8) в эту кодировку. А accept-charset этот "чудный" и "попалярный" браузёр не воспринимает (в любой версии). Может у кого-то есть решение - буду очень благодарен. 

Автор: nerezus 23.3.2009, 14:25
Цитата

Но желания изучать HTML у меня нет никакого. 
 Тогда не пишите программ с интерфейсом на HTML.
Сравнение повернее: я хочу делать коронарное шунтирование, но нет никакого желания работать со скальпелем.

P.S. Пригодился совет выше с кодировкой. Странно, что на сайте wm нигде этого не написано. Непрофессиональо как-то.
Хотя чего еще ждать от конторы, которая юзает левые сертификаты =)

Цитата

Кстати accept-charset не работает в IE:)
 Как решить данную проблему?
перекодировка через iconv не помогает.

Автор: maxim09 2.8.2009, 01:54
Цитата(mrsol @ 1.4.2008,  20:30)
А в чём собственно проблема то?
Учите хтмл переде тем как программировать начинать.
<form accept-charset="cp1251" action="https://merchant.webmoney.ru/lmi/payment.asp" method="POST">
Это работает на utf-8 страницах и деск не надо переводить в сп1251, нужно оставить в утф.

ЗЫ. Пришлось даже зарегиться чтобы ответить.

Спасибо большое!!!
Я весь нэт прошарил.....
Все так просто!!!!
+10
Буду учить html))))))

Пришлось даже зарегиться чтоб сказать спасибо!!!!

Автор: nerezus 2.8.2009, 01:58
maxim09, я тебя огорчу: это не работает в IE.

Решение такое: сабж для нормамальных браузеров и транслит для IE.
Я делаю именно так.

Автор: GremlinProg 30.9.2009, 01:23
не слишком старая тема, хотя начало еще в позопрошлом году,
вот тоже столкнулся с такой проблемой,
но не в плане передачи данных, как таковых, а в работе с формой через GET
тут проблема уже не только с IE, но и с FF, который зачем-то пытается подобрать кодировку не только для пути (это нормально),
но и для QUERYSTRING

что получается: отправляешь формой что-нибудь на вроде "мамамылараму" со странички (кодировка страницы: windows-1251) на адрес на подобии http://mysite.mir/мама/мыла/раму/
и получаешь кракозябры в пути, но понятные "мамамылараму" в QUERYSTRING  (это в FF)
сам URI построен корректно, т.е. путь - заэскейпенная UTF-8 строка

понятно, что это - следствие криво построенного URI, который генерируется формой (ну не должно быть в URI ни каких koi и win-1251 - только UTF-8), однако, раз уж форма это делает, зачем браузер пытается разбирать QUERYSTRING?
пусть бы и было оно там заэскейпенным, это же данные формы )

теперь вернемся к вопросу про IE и его якобы нерабочий accept-charset:
Цитата(ACCEPT-CHARSET Attribute | acceptCharset Property @ MSDN)

If ACCEPT-CHARSET is not specified, the form will be submitted in the character encoding specified for the document. If the form includes characters that fall outside the character set specified for the document, Microsoft Internet Explorer will attempt to determine an appropriate character set. If an appropriate character set cannot be determined, then the characters will be encoded as HTML numeric character references. For more information on character sets and numerical character references, see HTML Character Sets. 

объясняю: ACCEPT-CHARSET у майкрософт - это не дешефратор,
не задает этот атрибут кодировку данных,
это просто дополнительная перестраховка на тот случай,
если данные формы не укладываются в кодировку документа,
только в этом случае атрибут и будет задействован!

просто остальные браузеры, понимая данную ограниченность стандарта,
используют его именно в целях перекодировки,
а то, что его такое поведение -  именно исключение из стандарта, предпочитают благополучно забыть

чтобы все-таки послать в IE данные с формы в нужной кодировке, не заморачиваясь в JS и не меняя кодировку сайта,
можно просто подставить перед запросом свой конвертер,
т.е. посылаем форму самому себе на php-скрипт, который просто конвертирует данные
и редиректит их в заданном направлении

Автор: UNIUS 13.10.2009, 10:56
Привет. accept-charse тут не пройдёт.
Вместо  LMI_PAYMENT_DESC я пользую LMI_PAYMENT_DESC_BASE64.
а именно 
<?
echo '<input  name="LMI_PAYMENT_DESC_BASE64" value="'.base64_encode("Русский текст").'">';

Автор: nerezus 13.10.2009, 11:57
UNIUS, Ну и в какой кодировке русский текст?)

Автор: ruX 24.12.2009, 14:44
UNIUS, спасибо, действительно работает
хотя в документации этот параметр ещё не объявлен.


nerezus, у тебя не получилось так?

сорри за ап такого древнего топика

Автор: bolshayaproblema 17.5.2010, 10:41
Здравствуйте! На merchant.webmoney.ru в поле НАЗВАНИЕ ТОВАРА/УСЛУГИ на русском интерфейсе вписывается русский английский китайский тексты без проблем. Когда переходим на английский интерфейс пишется UNDEFINED.  Что делать? 

Автор: bozhok 5.10.2011, 14:02
Цитата(mrsol @  1.4.2008,  20:30 Найти цитируемый пост)
А в чём собственно проблема то?
Учите хтмл переде тем как программировать начинать.
<form accept-charset="cp1251" action="https://merchant.webmoney.ru/lmi/payment.asp" method="POST">
Это работает на utf-8 страницах и деск не надо переводить в сп1251, нужно оставить в утф.

ЗЫ. Пришлось даже зарегиться чтобы ответить. 



Спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)