不管是request还是response,HTTP都可以分成头部(元信息)和消息体(信息)两部分。消息体的属性通过头部来定义,对于MIME类型来说,就是Content-Type,比如text/plain,text/html,application/json等等。字符编码是Content-Type的一个可选属性,加上编码的类型就变成了:
Content-Type: text/plain;charset=utf-8
如果希望传输其他编码,就替换一下charset属性就行了:
Content-Type: text/plain;charset=gbk
一般来说标准并没有规定在不存在charset的时候如何理解字符编码,具体实现上也有很大差异,某些Content-Type不是字符类型数据,自然也没有什么字符编码。不过某些Content-Type则有默认的字符编码,例如application/x-www-form-urlencoded一般默认为UTF-8编码,application/json一般默认为UTF-8编码等等。
总结来说如果你希望上传一段text/plain类型的gbk编码的文本,就用Content-Type: text/plain;charset=gbk标识就行了。不过这只是个说明,Server如何解析,则取决于具体的实现,不一定所有Server都能正确处理charset属性。