размещение неанглийских данных с помощью HttpWebRequest - PullRequest
2 голосов
/ 22 декабря 2010

Веб-сайт на иврите с кодировкой Windows-1255. Используя расширение Tamer Data в Firefox, я вижу, что один из параметров Post:
+++++++++% Е4% FA% E7% E1% F8 +++++++++
используя эту таблицу, я перевел ее на иврит:

+++++++++ התחבר +++++++++

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

 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

 string param =;// What should I set here? should i type in hebrew? should i conver it to hex?         
 //Should I type +++++++++%E4%FA%E7%E1%F8+++++++++   or maybe %E4%FA%E7%E1%F8?
 string postData = string.Format({0}={1}",param,value);
 byte[] byteArray = Encoding.UTF8.GetBytes(postData); //what encoding to use?          
 request.ContentType = "application/x-www-form-urlencoded";           
 request.ContentLength = byteArray.Length;

 Stream dataStream = request.GetRequestStream();
 dataStream.Write(byteArray, 0, byteArray.Length);

Ответы [ 3 ]

2 голосов
/ 22 декабря 2010

Самый безопасный способ, на мой взгляд, это набрать его на иврите и использовать

Uri.EscapeDataString(paramValue) для экранирования символов

string param = 'paramName';        
string value = 'התחבר';

string postData = string.Format("{0}={1}", param, Uri.EscapeDataString(value));

Так что в этом случае было бы безопасно использовать ASCII.

0 голосов
/ 26 февраля 2016

@ дан ты прав, это работает очень хорошо

string scaprstring= Uri.EscapeDataString("unicode string" )`

 Uri.UnescapeDataString(scaprstring);
0 голосов
/ 22 декабря 2010

Если вы используете тип контента "application/x-www-form-urlencoded", то вы должны закодировать параметры в форме URL (то есть каждый байт, который недопустим в URL, должен быть % + шестнадцатеричный код). + становится пробелом во время декодирования, кстати.

Чтобы получить byteArray, используйте кодировку ASCII (все символы в этом массиве будут иметь кодовую точку <128). В этом случае <code>UTF-8 также будет работать, потому что в этом диапазоне они совпадают, но это не соответствует вашим намерениям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...