Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/21: Рейтинг темы: голосов - 21, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 24.06.2013
Сообщений: 49

Русский Post запрос в базу через http

27.04.2015, 17:57. Показов 4587. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Кто в курсе этого метода связи с БД на удаленном сервере, как через POST отправить переменные с русскими буквами? Английский воспринимает на ура, символы тоже, но как только дело доходит до Русского языка, программа просто не выполняет этот самый POST.
код соединения:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
 public static String executePost(String targetURL, String urlParameters) {
        URL url;
        HttpURLConnection connection = null;
        try {
            //Create connection
            url = new URL(targetURL);
            connection = (HttpURLConnection)url.openConnection();
            connection.setRequestMethod("POST");
            connection.setRequestProperty("Content-Type",
                    "application/x-www-form-urlencoded");
 
            connection.setRequestProperty("Content-Length", "" +
                    Integer.toString(urlParameters.getBytes().length));
 
 
            connection.setUseCaches (false);
            connection.setDoInput(true);
            connection.setDoOutput(true);
 
            //Send request
            DataOutputStream wr = new DataOutputStream (
                    connection.getOutputStream ());
            wr.writeBytes (urlParameters);
            wr.flush ();
            wr.close ();
 
            //Get Response
            InputStream is = connection.getInputStream();
            BufferedReader rd = new BufferedReader(new InputStreamReader(is));
            String line;
            StringBuffer response = new StringBuffer();
            while((line = rd.readLine()) != null) {
                response.append(line);
                response.append('\r');
            }
            rd.close();
            return response.toString();
 
        } catch (Exception e) {
 
            e.printStackTrace();
            return null;
 
        } finally {
 
            if(connection != null) {
                connection.disconnect();
            }
        }
    }
код передачи переменных:
Java
1
String result = executePost("http://тут адрес сайта", "name=Привет"....вот тут самое главное);
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.04.2015, 17:57
Ответы с готовыми решениями:

Http POST запрос, как правильно написать
Добрый день, мне нужно отправить данные на сервер, посредством http post запросом, нужно добавить автомобиль, сам пост запрос выглядит вот...

Как передать переменные через http.Send (post запрос)
Здравствуйте уважаемые форумчане! Имеется макрос для передачи данных в php скрипт, сейчас передаются постоянные данные, которые прописаны...

русский текст и POST запрос
Пытаюсь произвести POST запрос на сайт. Если забивать текст руками прямо в файл скрипта, т.е. например $text="один два три";, то...

11
75 / 75 / 7
Регистрация: 29.03.2012
Сообщений: 256
28.04.2015, 09:21
кодировку файла самого кода поставь UTF-8. у тебя же жестко вшитый код, вот он и пытается отправить win-1251 кодировку туда, где ждут utf-8
0
 Аватар для dubok79
325 / 123 / 10
Регистрация: 01.11.2012
Сообщений: 587
28.04.2015, 21:27
Я конвертил русские символы на клиенте в UTF-8, так получается двойная кодировка. А на сервере, делал обратную процедуру уже средствами php. Есть код на VBA, думаю разберетесь. Писал я его с java примера.
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
'************************************************************************************
'********Набор функций для кодирования русских символов для передачи в скрипт php****
'************************************************************************************
Public Function URLEncode(url As String) As String
    URLEncode = URLEncodeByUTF8(EncodeUTF8(url))
End Function
 
Public Function URLEncodeByUTF8(sRawURL As String) As String
On Error GoTo Catch
Dim iLoop As Integer
Dim sRtn As String
Dim sTmp As String
Const sValidChars = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz:/.?=_-$(){}~&"
 
    If Len(sRawURL) > 0 Then
        For iLoop = 1 To Len(sRawURL)
            sTmp = Mid(sRawURL, iLoop, 1)
            If InStr(1, sValidChars, sTmp, vbBinaryCompare) = 0 Then
                ' If not ValidChar, convert to HEX and prefix with %
                sTmp = Hex(Asc(sTmp))
                If sTmp = "20" Then
                    sTmp = "+"
                ElseIf Len(sTmp) = 1 Then
                    sTmp = "%0" & sTmp
                Else
                    sTmp = "%" & sTmp
                End If
            End If
            sRtn = sRtn & sTmp
        Next iLoop
        URLEncodeByUTF8 = sRtn
     End If
Finally:
     Exit Function
Catch:
     URLEncodeByUTF8 = ""
     Resume Finally
End Function
 
Function ToLong(intVal) As Long
    If intVal < 0 Then
        ToLong = CLng(intVal) + &H10000
    Else
        ToLong = CLng(intVal)
    End If
End Function
 
'кодируем символы в UTF-8
Function EncodeUTF8(s$) As String
Dim i, c, utfc, b1, b2, b3
    For i = 1 To Len(s)
        c = ToLong(AscW(Mid(s, i, 1)))
 
        If c < 128 Then
            utfc = Chr(c)
        ElseIf c < 2048 Then
            b1 = c Mod &H40
            b2 = (c - b1) / &H40
            utfc = Chr(&HC0 + b2) & Chr(&H80 + b1)
        ElseIf c < 65536 And (c < 55296 Or c > 57343) Then
            b1 = c Mod &H40
            b2 = ((c - b1) / &H40) Mod &H40
            b3 = (c - b1 - (&H40 * b2)) / &H1000
            utfc = Chr(&HE0 + b3) & Chr(&H80 + b2) & Chr(&H80 + b1)
        Else
            utfc = Chr(&HEF) & Chr(&HBF) & Chr(&HBD) 'Младший или старший суррогат UTF-16
        End If
 
        EncodeUTF8 = EncodeUTF8 + utfc
    Next
End Function
'************************************************************************************
'************************************************************************************


В итоге строка вида:
HTML5
1
http://mysite.ru/scripts.php?name=Привет
Должна выглядеть так:
HTML5
1
http://mysite.ru/scripts.php?name=%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82
Добавлено через 9 минут
Ну а в самом php-скрипте используется функция urldecode
PHP/HTML
1
echo urldecode('%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82');
Результатом будет: Привет
1
0 / 0 / 0
Регистрация: 24.06.2013
Сообщений: 49
28.04.2015, 22:56  [ТС]
dubok79, если первый код это образец, то, я так понимаю, надо писать отдельную процедуру. А стандартные методы кодирования-декодирования есть???
0
 Аватар для dubok79
325 / 123 / 10
Регистрация: 01.11.2012
Сообщений: 587
28.04.2015, 22:58
Цитата Сообщение от Хард Посмотреть сообщение
надо писать отдельную процедуру
надо и не одну
Цитата Сообщение от Хард Посмотреть сообщение
А стандартные методы кодирования-декодирования есть???
Со стороны клиента вроде бы нет. Я уже не помню.
0
0 / 0 / 0
Регистрация: 24.06.2013
Сообщений: 49
28.04.2015, 23:03  [ТС]
dubok79, хорошо, а если, допустим, запрос переводить в транслит, а на сервере обратно?
0
 Аватар для dubok79
325 / 123 / 10
Регистрация: 01.11.2012
Сообщений: 587
28.04.2015, 23:05
Тот же хрен только вид сбоку

Добавлено через 1 минуту
к тому же на php уже есть функция декодирования, а тут вам придется писать одно и тоже с двух сторон, да и наверное будут какие то косяки...навскидку не скажу
0
0 / 0 / 0
Регистрация: 24.06.2013
Сообщений: 49
28.04.2015, 23:05  [ТС]
dubok79, вот же блин засада. Везет американцам, им ничего переводить не надо.
0
 Аватар для dubok79
325 / 123 / 10
Регистрация: 01.11.2012
Сообщений: 587
28.04.2015, 23:06
не вижу сложностей
0
0 / 0 / 0
Регистрация: 24.06.2013
Сообщений: 49
28.04.2015, 23:15  [ТС]
dubok79, для меня сложность в том, чтобы разобраться с этим, а времени в обрез.
0
400 / 343 / 85
Регистрация: 17.10.2014
Сообщений: 1,015
29.04.2015, 08:55
Хард, не особо углубляясь:
а связка
Java
1
URLEncoder.encode()
на клиенте и php на сервере
PHP
1
urldecode()
разве не оно?
1
 Аватар для dubok79
325 / 123 / 10
Регистрация: 01.11.2012
Сообщений: 587
29.04.2015, 09:22
И все же перед использованием почитайте про русские символы. Все таки URLEncoder не для них писан, а что бы экранировать спец символы. Например тут почитайте.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.04.2015, 09:22
Помогаю со студенческими работами здесь

Post запрос - русский текст
Помогите пожалуйста разобраться QNetworkRequest request; ...

HTTP запрос и POST
Нужно сделать запрос методом POST, делаю так: var val1 = 1; var val2 = 2; var xmlHttpReq = new...

HTTP-POST запрос.
Ниже приведенный код отправляет POST запрос. Проблема в том, что в ответ принимаются не все данные(не вся страница). Подскажите пожалуйста...

HTTP Post запрос в Qt Android
Qt 5.10.1 OS Windows 7 Разработка под Андроид Добрый день, пишу программу на Qt под Андроид. Отправляю POST запросы на сайт для...

HTTP Post запрос Java
Здравствуйте, подскажите в чем проблема? Необходимо реализовать передачу параметров от Клиента Серверу, от клиента параметры улетают, но...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru