我將POST數據從Python程序發送到Node.JS服務器,並使用res.end返回。這裏的Python代碼:獲取POST數據並返回res.end() - 編碼問題
#! /usr/bin/env python
# -*- coding: utf-8 -*-
import requests
value = u"Этот текст в кодировке Unicode"
url = "http://localhost:3000/?source=test"
headers = {'content-type': 'text/plain; charset=utf-8'}
r = requests.post(url, data=value.encode("utf-8"))
print r.text
這裏就是我如何處理在Node.js的數據:
http.createServer(function(req, res) {
req.setEncoding = "utf8"
var queryData = '';
if (req.method == 'POST') {
req.on('data', function(data) {
queryData += data;
});
req.on('end', function() {
res.writeHead(200, {
'Content-Type': 'text/plain'
});
res.end(queryData)
});
} else {
// sending '405 - Method not allowed' if GET
res.writeHead(405, {
'Content-Type': 'text/plain'
});
res.end();
}
}).listen(3000, '127.0.0.1');
至於結果,我得到:
$ python test.py
ÐÑÐ¾Ñ ÑекÑÑ Ð² кодиÑовке Unicode
我應該如何設置編碼正確獲得「ЭтоттекствкодировкеUnicode」作爲結果?謝謝。
的編碼應當是正確的,我還沒有處理蟒蛇很多,但它可能是一個問題在不打印unicode的返回側?我認爲雖然第二個散列設置python默認爲uft8進行打印。 – travis
節點部分看起來沒問題。如果你用'curl'或'wget'發帖? (對我來說它工作正常,我敢打賭這是python的問題。)在旁註中,unicode不是編碼,utf8是。 – elmigranto
@elmigranto如果我用CURL POST,一切正常。但是,我試圖用python交互式shell進行請求。 >>> r.headers ['Content-Encoding'] 'utf-8',如果我得到>>> r.encoding 'ISO-8859-1' – f1nn