我正在实现一个接收POST方法的服务(作为其余部分)。
我的系统中的编码是UTF-8。
我正在使用jboss 5,其中接收请求的servlet遵循rfc2068的 HTTP 1.1 规范,其中声明:
如果发件人未提供明确的字符集参数,则“text”类型的媒体子类型定义为默认字符集值“ ISO-8859-1 “通过HTTP接收时。
所以当调用我的服务的客户端使用例如UTF-8并且没有指定字符集,并且POST的主体包含US-ASCII之外的字符时,Jboss servlet假定“ ISO- 8859-1 “并进行”错误“解码,在我的系统中,我收到”破损“的字符。例如,我会收到“dÂa”而不是字符串“día”。
我发现“保护”我的系统的方法是要求客户在 内容类型 charset > 参数。如果未指定字符集,则我使用http 403和指示“必须指定字符集值”的文本进行响应。
这种方法有什么问题吗?
答案 0 :(得分:2)
对于text / plain,这意味着US-ASCII(据我记得),因此想要发送非ASCII字符的客户端确实需要指定字符集。