2010-04-23 3 views
0

У меня есть приложение Java, отправляющее HTTP-запросы в приложение C#. Приложение C# использует HTTPListener для прослушивания запросов и ответа. На стороне Java я кодирую URL-адрес с помощью UTF-8.C# Ошибка кодирования HTTPListener

Когда я отправляю символ \, он получает кодировку как% 5C, как ожидалось, но на стороне C# он становится символом /. Кодировка для объекта запроса - это Windows-1252, который, как я думаю, может вызвать проблему. Как установить кодировку по умолчанию для UTF-8?

В настоящее время я делаю это, чтобы преобразовать кодировку:

 foreach (string key in request.QueryString.Keys) 
     { 
      if (key != null) 
      { 
       byte[] sourceBytes =request.ContentEncoding.GetBytes(request.QueryString[key]); 
       string value = Encoding.UTF8.GetString(sourceBytes)); 
      } 
     } 

Это обрабатывает символы не ASCII Я также отправки, но не решает проблему слэш. Изучение request.QueryString [key] в отладчике показывает, что/уже существует.

ответ

0

Encode каждый запрос строковой переменной в UTF8:

byte[] utf8EncodedQueryBytes = Encoding.UTF8.GetBytes(key); 
0

коротко: вы должны добавить charset=utf-8 к типу контента в заголовке ответа.

заголовок shoud выглядит следующим образом. Content-Type = "текст/равнинный, кодировка = UTF-8"

var text = "Hello World - Barkod Çözücü"; 
var buffer = Encoding.UTF8.GetBytes(text); 

ctx.Response.ContentEncoding = Encoding.UTF8;   // this doesnt work?? 
ctx.Response.ContentType = "text/plain; charset=utf-8"; //Fixxxx 

ctx.Response.ContentLength64 = buffer.Length; 
ctx.Response.OutputStream.Write(buffer, 0, buffer.Length); 

Long:

ответ заголовок моего HTTP слушателя

//where is utf-8 ??? i need to put it somewhere here...!!! 
Content-Length: 31 
Content-Type: text/plain;  
Server: Microsoft-HTTPAPI/2.0 

я осмотрел веб-страницы, способен отображать символы utf-8, такие как turkish üğşİ

ответный заголовок с этого сайта utf-8

content-type: text/html; charset=utf-8 //so we have put it here like this. 
content-length: 20270 
content-encoding: gzip 
... 
Смежные вопросы