鍍金池/ 問答/Java  網(wǎng)絡(luò)安全  HTML/ socket通訊如何發(fā)送中文gbk編碼字符串?

socket通訊如何發(fā)送中文gbk編碼字符串?

與一臺(tái)telent協(xié)議的服務(wù)器進(jìn)行交互,服務(wù)器通訊編碼是gb2312

目前向服務(wù)器請(qǐng)求回的內(nèi)容可以用iconv解碼,服務(wù)器發(fā)過來的gb2312在解碼后顯示正常

    telnetInput.pipe(through2((chunk, enc, callback) => {
      chunk = iconv.decode(chunk, 'gbk');
      chunk = chunk.replace(/((?:[\n\r]|^)<.*?>)\n\r?/g, '$1 ');
      if (chunk) {
        callback(null, chunk);
      } else {
        callback(null);
      }
    })).pipe(process.stdout);
    

但向服務(wù)器發(fā)送時(shí),nodejs支持的字符串類型沒有g(shù)bk類編碼

輸入的時(shí)候用了readline,readline支持的編碼跟nodejs保持一致,所以之前有朋友回復(fù)的用gbk那個(gè)現(xiàn)成模塊回報(bào)編碼不支持的錯(cuò)誤。

this.telnetOutput.write(rawStr + '\n');

雖然nodejs可寫流wirte支持指定編碼,但也不包含中文。發(fā)送中文到服務(wù)器收到的依然是utf8編碼。

既然請(qǐng)求獲得下行數(shù)據(jù)可以是gbk編碼,那如何發(fā)送原始的gbk編碼到服務(wù)器端?

回答
編輯回答
獨(dú)白
2018年5月13日 18:22