【问题标题】:Language specific characters in jsonjson中的语言特定字符
【发布时间】:2015-04-16 07:02:37
【问题描述】:

我需要将我的 json 中的一些语言特定字符发送到我正在运行的本地 tomcat 服务器。每次遇到这些字符时,它都会按预期显示“400 - 请求在语法上不正确”

有什么解决办法吗?另外,我不希望它支持某些特定语言,但要保持通用并支持发送请求的浏览器支持的所有语言。

后端支持Spring MVC,会处理json输入

示例:

абвгдеёжзийклмнопрстуфхцчшщъыьэюя=один

控制器代码:

    @RequestMapping(value = "/services", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)

public ResponseEntity<Response1> executeService(
                @RequestBody Request1 request) {
    //controller code
    }

Json 请求:

{
  "serviceName":"abc",
  "input":{
    "text":"абвгдеёжзийклмнопрстуфхцчшщъыьэюя=один"
  }
}

附: Json对英文字符有效,如果我发送正常的英文字符,控制器正常工作,并且在这种情况下显示正确的输出。

检查 cmets 是否面临特定错误

【问题讨论】:

  • 看起来你没有使用UTF-8端到端编码。
  • 对不起,但是如何在客户端添加编码,通过 REST 客户端发送请求的人,比如浏览器扩展?
  • 和其他地方一样,设置正确的标题。
  • Content-Type: "application/json; charset=utf-8" 我正在设置这个。给出 415:不支持的 MediaType 错误

标签: java json spring rest tomcat


【解决方案1】:

这不是有效的 JSON。有效的 JSON 如下所示:

{"абвгдеёжзийклмнопрстуфхцчшщъыьэюя" : "один"}

另一个常见的罪魁祸首是字符集或编码。 JavaScript 将 Unicode 用于字符串,任何值得称道的 JSON 框架在为线路准备数据时都将使用 UTF-8 编码。因此,除非您尝试自己做所有事情(不使用任何框架)或者您正在篡改标头,尤其是 Content-Type 标头,否则这应该是开箱即用的。

如果这两个建议不能解决您的问题,您必须向我们展示您的代码。

【讨论】:

  • 抱歉不清楚,字符串类似于 { "name" : "абвгдеёжзийклмнопрстуфхцчшщъыьэюя=один" }
  • 这是有效的 JSON。您是否检查了请求在网络上看起来是否正确?今天的大多数浏览器都允许您查看正在发送和接收的数据。
  • 使用 charset=utf-8 标头时,会显示 415 错误 如果没有它,请求在语法上不正确,并且在网络上看起来也不正常
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-25
  • 2010-10-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多