我创建了<form>
,指向http://localhost:17099/Form/Subscribe
并在我的网站上托管...
每当我尝试post
北欧角色时,我都会这样:
这是我发布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
女巫导致"? ? ?"
答案 0 :(得分:1)
表示可能没有使用正确的内容类型发布表单;它应该是:
application/x-www-form-urlencoded; charset=UTF-8
您可以将此简单地附加到<form>
accept-charset="UTF-8"
enctype="application/x-www-form-urlencoded; charset=UTF-8;"
所以最终会像:
<form method="post"
action="http://domain.com/subscribe"
accept-charset="UTF-8"
enctype="application/x-www-form-urlencoded; charset=UTF-8;">