簡體   English   中英

包含ascii字符的POST請求[x-www-form-urlencoded]

[英]POST request containing ascii characters [x-www-form-urlencoded]

我已經閱讀了很多問題,但是沒有一個解決方案可以解決我的問題。

我正在嘗試提交一個表格,其中頁面的字符集是ISO-8859-1。 我正在使用github.com/request/request

從文檔開始,要提交表單,我們基本上需要:

request.post({url:'http://service.com/upload', form: {key:'value'}}, function(err,httpResponse,body){ /* ... */ })

我試了但是ascii字符不對。 該頁面不接受我發送的內容:

var options = { 
  url: formData.action,
  encoding: 'ascii',
  form: { username: 'teste', password: '23dçkasã' }
}

request.post(options, function...)

我也嘗試:

var options = { 
  url: formData.action,
  headers: { 
    'Content-Type': 'application/x-www-form-urlencoded; charset=iso-8859-1'
  },
  form: { username: 'teste', password: '23dçkasã' }
}

request.post(options, function...)

編輯:

我也嘗試使用charset=Windows-1252和Iconv: var iconv = new Iconv('UTF-8', 'ISO-8859-1');

問題出在查詢字符串上:

我用於測試的密碼是djaçf3 ,POST請求djaçf3的查詢字符串是djaçf3 dja%C3%A7f3但是ISO-8859-1應該是dja%E7f3

所以我使用Node中的querystring.stringify(obj [,sep] [,eq] [,options]) ,最終結果為:

var options = { 
  url: formData.action,
  form: querystring.stringify({ username: 'xpto', password: 'djaçf3' }, null, null, { encodeURIComponent: escape })
}

request.post(options, function...)

Options對象可能包含encodeURIComponent屬性(默認為querystring.escape),如果需要,它可用於對非utf8編碼的字符串進行編碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM