在一个小的示例应用程序中,我尝试处理非拉丁字符。因此,我有一个PostgreSQL DB9.4,一个NodeJS服务器,并在客户端使用server。在Postgres中,我有一个简单的表'name‘,其中包含了英语、俄语和中文名称(拉丁语/西里尔语/汉语utf-8字符)。
问题是,如果我从浏览器发送REST请求(在一个类似于选择位置的查询中向Postgres发送),我将得到正确的英文查询响应,而不是中文查询响应。对于REST字符串中的非拉丁字符,我总是一无所获。
我发现,Node收到的是'/dataload/name?%E9%82%A3%E4%BD%95‘之类的东西,而不是'/dataload/name?那何'.当然,如果我在一个类似的查询中使用这一点,它就会达到相似%、E9%、82%、A3%、E4%、BD%、95%,而且显然是行不通的。但我忘了什么东西在哪里?我要怎么做才能让节点收到正确的UTF-8字符?顺便说一下,我使用Webstorm/Windows进行开发。我应该提供更多的信息吗?我想Postgres已经设置好了,但是在浏览器或角码中有一些设置.?谢谢您的提示!
更新:
我刚在角请求中添加了标题配置:
$http.get(strReq, {
headers: { 'Content-Type': 'application/json; charset=utf-8' }
})但问题仍然存在。萤火虫告诉我:
GET http://.../dataload/name?%E9%82%A3%E4%BD%95使用此请求头:接受应用程序/json,文本/平原,/ Accept -编码gzip,压缩接受-语言en-US,en;q=0.5 DNT 1主机本地主机
User-Agent Mozilla/5.0 (Windows NT 6.3; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0但作为参数正确:那何
发布于 2015-10-02 20:28:08
几件事。
其结果是,您需要首先在服务器端执行url解码,或者使用已经为您完成此操作的框架。
https://stackoverflow.com/questions/27444113
复制相似问题