Mat*_*nis 9 javascript java jetty utf-8 node.js
我正在从节点中间层到Java后端进行调用,并将字符串作为查询参数传递.一切都很好,直到使用非英文字母字符(例如:ř,ý).当Java收到这些字符时,它会抛出:
parse exception: org.eclipse.jetty.util.Utf8Appendable$NotUtf8Exception: Not valid UTF8!
Run Code Online (Sandbox Code Playgroud)
此调用完美无缺:
GET http://localhost:8000/server/name?name=smith
Run Code Online (Sandbox Code Playgroud)
此调用失败,出现上述错误:
GET http://localhost:8000/server/name?name=so?ovský
Run Code Online (Sandbox Code Playgroud)
我的问题涉及到哪里解决这个问题.我已经找到了这个节点的utf8编码器,并考虑在将来调用我的Java层之前将我的字符串编码为utf8.这是正确的方法还是我应该在Java中做些什么?
请注意,这是我的相关请求标头的样子:
{
...
accept: 'application/json, text/plain, */*',
'accept-encoding': 'gzip, deflate, sdch',
'accept-language': 'en-US,en;q=0.8,el;q=0.6',
...
}
Run Code Online (Sandbox Code Playgroud)
将 JavaScript 文件保存为 utf8。
\n\nvar name = "so\xc5\x99ovsk\xc3\xbd",\n param1 = encodeURIComponent(name);\n\nvar url = "http://localhost:8000/server/name?name=" + param1;\n\nconsole.log(url);\n// http://localhost:8000/server/name?name=so%C5%99ovsk%C3%BD\nRun Code Online (Sandbox Code Playgroud)\n\n你可以看到日志GET http://localhost:8000/server/name?name=so\xc5\x99ovsk\xc3\xbd:
{\n "args": {\n "name": "so\xc5\x99ovsk\xc3\xbd"\n }, \n "headers": {\n "Accept": "application/json, text/plain, */*",\n "Accept-encoding": "gzip, deflate, sdch",\n "Accept-language": "en-US,en;q=0.8,el;q=0.6",\n //...\n },\n "url": "http://localhost:8000/server/name?name=so\xc5\x99ovsk\xc3\xbd"\n}\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
440 次 |
| 最近记录: |