当我向 REST 服务发出带有 JSON 正文的 POST 请求时,我包括Content-type: application/json; charset=utf-8
在邮件标题中。如果没有此标头,我会从服务中收到错误。我也可以成功使用Content-type: application/json
没有;charset=utf-8
部分。
到底是做什么的charset=utf-8
做 ?我知道它指定了字符编码,但没有它服务也可以正常工作。此编码是否限制消息正文中可以包含的字符?
标头仅表示内容的编码内容。不一定可以从内容本身推断出内容的类型,即您不一定可以仅查看内容并知道如何处理它。这就是 HTTP 标头的用途,它们告诉接收者他们(应该)正在处理什么类型的内容。
Content-type: application/json; charset=utf-8
指定内容为 JSON 格式,以 UTF-8 字符编码进行编码。对于 JSON 来说,指定编码有点多余,因为 JSON 的默认(唯一?)编码是 UTF-8。因此,在这种情况下,接收服务器显然很高兴知道它正在处理 JSON,并假设默认编码为 UTF-8,这就是它在有或没有标头的情况下工作的原因。
此编码是否限制消息正文中可以包含的字符?
不。您可以在标头和正文中发送任何您想要的内容。但是,如果两者不匹配,您可能会得到错误的结果。如果您在标头中指定内容采用 UTF-8 编码,但实际上发送的是 Latin1 编码内容,则接收方可能会生成垃圾数据,并尝试将 Latin1 编码数据解释为 UTF-8。当然,如果您指定要发送 Latin1 编码数据并且您确实这样做了,那么是的,您只能使用 Latin1 编码的 256 个字符。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)