Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Искажение русского при передаче данных через XML форму на исполнение скрипту

Ответить
Настройки темы
Искажение русского при передаче данных через XML форму на исполнение скрипту

Новый участник


Сообщения: 16
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: Midnight-Ghost
Дата: 14-05-2007
Приветствую всех!

Помоги пожалуйста. Пишу портал на С++. Всё почти дописано, новыяснилась одна проблема: например есть форма для ввода данных о пользователе. Пользователь вбивает данные и вместо русского текста в адрессной строке появляется что-то вроде "%26%231091%3B%26%231091%3B%26%". Кодировка стоит uft8 международная. Да даже пробовал и cp1251 ставить - не помогает. В то же время помню, что видел много сайтов, где в адрессной строке фигурирует русский текст и не искажается.

Люди, кто-нить знает как устранить эту проблему?

Помогите пожалуйста! Заранее всем спасибо!

PS. Или может есть способ передать данные из формы без искажений? Я так посмотрел, что даже если где-то вырыть какая буква в какие иероглифы превращается и писать декриптовцик, а статья(добавленная через окно формы) будет в раёне там 1500 символов то это пардон не хилая нагрузка на проц сервака... А если ещё и пользователей, каторые такое добавляют много, то и сервак повиснуть может.

Вобщем помогите с рещением данной проблемы пожалуйста.

Отправлено: 07:23, 14-05-2007

 

Ночной странник


Contributor


Сообщения: 4050
Благодарности: 83

Профиль | Сайт | Отправить PM | Цитировать


Midnight-Ghost
это не есть проблема, вске так и должно быть
при отсылке информации на сервер броузер кодирует данные, а при приеме они автоматичевски декодируются
для передачи больших объемов данные есть POST параметры запроса.

1) а причем здесь XML?
2) зачем писать веб портал на С++ ? чем вас язики преднозначенные для этих целей не устроили?

-------
можно практически все, но просто мы это еще не знаем.
главный враг програмиста это копипастинг
За хорошее сообщение не забываем нажимать ссылочку "Полезное сообщение"!


Отправлено: 08:00, 14-05-2007 | #2



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 16
Благодарности: 0

Профиль | Отправить 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


Ночной странник


Contributor


Сообщения: 4050
Благодарности: 83

Профиль | Сайт | Отправить PM | Цитировать


Midnight-Ghost
1) а кто вообще оанлизурует в ручную строку запроса? $_GET['name'] - вернет искомое значение!
2) что мешает все написать руками на PHP?

-------
можно практически все, но просто мы это еще не знаем.
главный враг програмиста это копипастинг
За хорошее сообщение не забываем нажимать ссылочку "Полезное сообщение"!


Отправлено: 12:58, 14-05-2007 | #4


Новый участник


Сообщения: 16
Благодарности: 0

Профиль | Отправить 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
Благодарности: 0

Профиль | Отправить PM | Цитировать


PS. Кто-нибудь может посоветовать, где найти стандарты кодировок? Ну тоесть в каких кодировках какие символы чему соответствуют, чтоб тогда можно было декодировать вручную?

Отправлено: 07:21, 17-05-2007 | #6


Ночной странник


Contributor


Сообщения: 4050
Благодарности: 83

Профиль | Сайт | Отправить PM | Цитировать


Midnight-Ghost
нужно наверное искать на стандарты перекодирования а уже готовую библиотесную функцию!
гугль очень полезная штука если знать что искать: http://www.google.ru/search?hl=ru&q=...%B2+Google&lr=

прямо сверху очень много инвы о кодировании декодировании строк

-------
можно практически все, но просто мы это еще не знаем.
главный враг програмиста это копипастинг
За хорошее сообщение не забываем нажимать ссылочку "Полезное сообщение"!

Это сообщение посчитали полезным следующие участники:

Отправлено: 11:06, 17-05-2007 | #7


Новый участник


Сообщения: 16
Благодарности: 0

Профиль | Отправить PM | Цитировать


Ну насчёт готовой функции.... это не обязательно, иначе зачем программисту мозги? Но за ссылку спасибо! Вобщем нащёл форум разработциков, которые объяснили формулу кодирования ASCII и там всего выходит 2 варианты: 1) если встречается символ "+" его заменить на пробел, если же %5D или тому похожее по формуле вычислить десятичное значение и это значение превратить в char. За минут пять написать можно. Вобщем спасибо Вам, Vlad Drakula. Думаю тему закрыть можно. Всем удачи!

Отправлено: 18:55, 17-05-2007 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Искажение русского при передаче данных через XML форму на исполнение скрипту

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Вставка данных в веб-форму 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




 
Переход