|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Искажение русского при передаче данных через XML форму на исполнение скрипту |
|
Искажение русского при передаче данных через XML форму на исполнение скрипту
|
Новый участник Сообщения: 16 |
Приветствую всех!
Помоги пожалуйста. Пишу портал на С++. Всё почти дописано, новыяснилась одна проблема: например есть форма для ввода данных о пользователе. Пользователь вбивает данные и вместо русского текста в адрессной строке появляется что-то вроде "%26%231091%3B%26%231091%3B%26%". Кодировка стоит uft8 международная. Да даже пробовал и cp1251 ставить - не помогает. В то же время помню, что видел много сайтов, где в адрессной строке фигурирует русский текст и не искажается. Люди, кто-нить знает как устранить эту проблему? Помогите пожалуйста! Заранее всем спасибо! PS. Или может есть способ передать данные из формы без искажений? Я так посмотрел, что даже если где-то вырыть какая буква в какие иероглифы превращается и писать декриптовцик, а статья(добавленная через окно формы) будет в раёне там 1500 символов то это пардон не хилая нагрузка на проц сервака... А если ещё и пользователей, каторые такое добавляют много, то и сервак повиснуть может. Вобщем помогите с рещением данной проблемы пожалуйста. |
|
Отправлено: 07:23, 14-05-2007 |
Ночной странник Сообщения: 4050
|
Профиль | Сайт | Отправить PM | Цитировать Midnight-Ghost
это не есть проблема, вске так и должно быть при отсылке информации на сервер броузер кодирует данные, а при приеме они автоматичевски декодируются для передачи больших объемов данные есть POST параметры запроса. 1) а причем здесь XML? 2) зачем писать веб портал на С++ ? чем вас язики преднозначенные для этих целей не устроили? |
------- Отправлено: 08:00, 14-05-2007 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 16
|
Профиль | Отправить PM | Цитировать Ну не знаю, больше нравится когда всё написано самим, нету глюком и точно знаешь где дырки заделывать.
Насчёт того, что это не есть проблема. У меня знаковый на ПХП писать пробовал. У него та же самая проблема была. Данные отправляются на сервер в вот таком "закодированном" виде и именно в этом виде он их вбивает в базу данных MySQL. Так как декодировать такую отсылку данных? Вот собственно задача: путь даже есть форма с единственным полем ввода например, далее идёт метод POST/GET, и передаются данные на обработку части программы которая должна эти данные записать в базу данных, но не в искажённом виде. Поскольку, как среди таких иероглифов можно поиск осущесвить? Посмотрел книку по ПХП, всё равно - принцип тот же: данные из формы идут ввиде запроса типа: http://somehost/script?name=%D0%B0%D0%B2%D0%B0%D0%B2%D1 , затем идёт анализ, берётся строка запроса, тоесть всё, что после знака "?" и идёт анализ данных. Вот скажите, наверняка ведь кто-нить это делал, как получить нормальное значение того что записано "name="? PS. Вот даже просто из спортивного интереса проверил, если пытаться такой искажённый текст прочитать из базы данных(тоесть вывести на интернет страницу, то они такими искажёнными и выводятся). Неужели нету способа в нормальном виде получить данные? |
Последний раз редактировалось Midnight-Ghost, 14-05-2007 в 09:48. Отправлено: 08:13, 14-05-2007 | #3 |
Ночной странник Сообщения: 4050
|
Профиль | Сайт | Отправить PM | Цитировать Midnight-Ghost
1) а кто вообще оанлизурует в ручную строку запроса? $_GET['name'] - вернет искомое значение! 2) что мешает все написать руками на PHP? |
------- Отправлено: 12:58, 14-05-2007 | #4 |
Новый участник Сообщения: 16
|
Профиль | Отправить PM | Цитировать На PHP я не хочу писать, хотябы потому, что он идёт как OPEN SOURCE, тоесть получив такой скрипт, пользователь сможет их нагло ставить себе пачками, в то время, как в С++ ему исходников не будет. Вот в принципе главная причина. А платить за всякие энкодеры для ПХП которые ещё и системные ресурсы хавают и лаве хороших стоят - увольте
Люди, ну не знаю я, хоть башкой об стенку стучись, гляньте плиз... вот код: char querry[1024] = ""; string query =""; int contentLength = 0; string lang = ""; string category = ""; string word = ""; string caption = ""; if(getenv("CONTENT_LENGTH")) { contentLength = atoi(getenv("CONTENT_LENGTH")); cin.read(querry, contentLength); query = querry; int langlocation = query.find ( "lang=" )+5; int langend = query.find ("&category"); lang = query.substr(langlocation, langend - langlocation); int categorylocation = query.find ( "category=" )+9; int categoryend = query.find ("&word"); category = query.substr(categorylocation, categoryend - categorylocation); int wordlocation = query.find ( "word=" )+5; int wordend = query.find ("&caption"); word = query.substr(wordlocation, wordend - wordlocation); int captionlocation = query.find ( "caption=" )+8; int captionend = query.find ("&"); caption = query.substr(captionlocation, captionend - captionlocation); cout<<"Result:\n"<<lang<<"\n"<<category<<"\n"<<word<<"\n"<<caption; } if(query=="") { cout<<"<center>Space Logic Board Translator</center>"; cout<<"<table>" <<"<form method = \"post\">" <<"<tr>" <<"<td>Выбрать язык для редактирования:</td>" <<"<td><select name=\"lang\" size=\"0\"><option value=\"1\" >English</option><option value=\"rus\">Russian</option></td>" <<"</tr>" <<"<tr>" <<"<td>Категория:</td>" <<"<td><select name=\"category\" size=\"0\"><option value=\"Registration\" >Registration</option><option value=\"Main\">Main</option></td>" <<"</tr>" <<"<tr>" <<"<td>Переменная:</td>" <<"<td><input type=\"text\" name=\"word\"></td>" <<"</tr>" <<"<tr>" <<"<td>Перевод:</td>" <<"<td><input type=\"text\" name=\"caption\"></td>" <<"</tr>" <<"</table>" <<"<input type =\"submit\" value=\"Install Engine\"></form>"; |
|
Последний раз редактировалось Midnight-Ghost, 17-05-2007 в 07:14. Отправлено: 05:47, 17-05-2007 | #5 |
Новый участник Сообщения: 16
|
Профиль | Отправить PM | Цитировать PS. Кто-нибудь может посоветовать, где найти стандарты кодировок? Ну тоесть в каких кодировках какие символы чему соответствуют, чтоб тогда можно было декодировать вручную?
|
Отправлено: 07:21, 17-05-2007 | #6 |
Ночной странник Сообщения: 4050
|
Профиль | Сайт | Отправить PM | Цитировать Midnight-Ghost
нужно наверное искать на стандарты перекодирования а уже готовую библиотесную функцию! гугль очень полезная штука если знать что искать: http://www.google.ru/search?hl=ru&q=...%B2+Google&lr= прямо сверху очень много инвы о кодировании декодировании строк |
------- Отправлено: 11:06, 17-05-2007 | #7 |
Новый участник Сообщения: 16
|
Профиль | Отправить PM | Цитировать Ну насчёт готовой функции.... это не обязательно, иначе зачем программисту мозги? Но за ссылку спасибо! Вобщем нащёл форум разработциков, которые объяснили формулу кодирования ASCII и там всего выходит 2 варианты: 1) если встречается символ "+" его заменить на пробел, если же %5D или тому похожее по формуле вычислить десятичное значение и это значение превратить в char. За минут пять написать можно. Вобщем спасибо Вам, Vlad Drakula. Думаю тему закрыть можно. Всем удачи!
|
Отправлено: 18:55, 17-05-2007 | #8 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] Вставка данных в веб-форму | aesir | AutoIt | 15 | 11-05-2009 15:54 | |
Проблема при передаче файлов через VPN туннель. | Keo | Microsoft Windows NT/2000/2003 | 2 | 27-02-2009 22:50 | |
Зависание ПК при передаче сообщений | kem | Microsoft Exchange Server | 18 | 07-07-2008 23:18 | |
FTP/File - Почему "бьётся" файл при передаче через фтп? | Gamover jr | Сетевые технологии | 1 | 14-01-2008 11:02 | |
Запрет доступ к исполнение фалов ! Через групповой политики сделал но ... | dosim | Microsoft Windows NT/2000/2003 | 9 | 08-06-2006 11:24 |
|