Как мы декодируем строку, которая была опубликована с другого домена? - PullRequest
1 голос
/ 21 ноября 2011

Я создал <form>, который указывает на http://localhost:17099/Form/Subscribe, и размещен на моем веб-сайте ...

Каждый раз, когда я пытаюсь post символов Северной Европы, я получаю их так:

enter image description here

Это я отправляю Bruno Alexandre å ø æ как Name.

Что мне нужно сделать , чтобы получитьправильно закодированные символы?

  • Я пытался использовать GetBytes(), чтобы выяснить, могу ли я преобразовать одну кодировку в другую
  • Я пытался использовать этот трюк
  • Я пытался добавить accept-charset="ISO-8859-1" к форме

, но ничего не работает ...

Если я проверю Accept-Charset из текущего запроса я получаю:

ISO-8859-1,utf-8;q=0.7,*;q=0.3

Если я поиграюсь с System.Text.Encoding, я получу это:

var name = System.Text.Encoding.GetEncoding("iso-8859-1").GetBytes(model.Name);
string n = System.Text.Encoding.UTF8.GetString( name );

n будет печататься как "Bruno Alexandre ? ? ?"

Развернуть и преобразовать строку в байты, если я отправлю å æ ø, вот что я получаю:

var b = System.Text.Encoding.GetEncoding("iso-8859-1").GetBytes(model.Name);

b[0] = 63
b[1] = 32
b[2] = 63
b[3] = 32
b[4] = 63

с результатом "? ? ?"

1 Ответ

1 голос
/ 21 ноября 2011

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

application/x-www-form-urlencoded; charset=UTF-8

Вы можете просто добавить это к вашему <form>

accept-charset="UTF-8" 
enctype="application/x-www-form-urlencoded; charset=UTF-8;"

, так что в итоге оно будет выглядеть так:

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