Я хочу отправить знак знака фунта, т. Е. '£', закодированный как ISO-8859-1 по проводу. я выполнить это, выполнив следующие действия:Символ '£', похоже, не кодируется правильно - ожидайте '% a3', но получите '% u00a3'
var _encoding = Encoding.GetEncoding("iso-8859-1");
var _requestContent = _encoding.GetBytes(requestContent);
var _request = (HttpWebRequest)WebRequest.Create(target);
_request.Headers[HttpRequestHeader.ContentEncoding] = _encoding.WebName;
_request.Method = "POST";
_request.ContentType = "application/x-www-form-urlencoded; charset=iso-8859-1";
_request.ContentLength = _requestContent.Length;
_requestStream = _request.GetRequestStream();
_requestStream.Write(_requestContent, 0, _requestContent.Length);
_requestStream.Flush();
_requestStream.Close();
Когда я поставил точку останова на цели, я ожидаю получить следующее: «% a3», однако я получаю «% u00a3» вместо этого. Мы проверили множество нечетных персонажей, но «Е», кажется, единственный персонаж, в котором проблема.
Кто-нибудь знает, в чем проблема? - Помощь будет с благодарностью ...
Билли
Я не слишком уверен, как помочь, но Ouf из любопытства, может вы не использовать utf8 для кодирования? Как правило, гораздо меньше ошибок, связанных с такими проблемами. – Flukey
Не использовать UTF8 в качестве сервера, на который мы обращаемся (сторонняя служба), настаивать на использовании ISO 8859-1 – bstack
У меня нет ответа на ваш вопрос, но было бы интересно узнать, что произойдет, если вы используете Encoding.Default и «windows-1252» в качестве кодировок (см. http://mindprod.com/jgloss/encoding.html). –