CNode

node socket tcp client 如何提交gbk到服务器

问答
Nnyrf发布于10 年前最后回复10 年前8 回复5559 浏览0 收藏

现在java服务器那边只接收gbk格式的,node这边怎么提交都是乱码,请教下怎么能在socket提交时提交gbk格式的,看了下setEncoding 只有 'utf8','ascii' 或 'base64'

var net = require('net');

var HOST = '127.0.0.1';
var PORT = 8008;

var client = new net.Socket();
client.connect(PORT, HOST, function() {

    console.log('CONNECTED TO: ' + HOST + ':' + PORT);
    client.write('中文');  //这里就提交就乱码了

});

// 为客户端添加“data”事件处理函数
// data是服务器发回的数据
client.on('data', function(data) {

    console.log('DATA: ' + data);
    // 完全关闭连接
    client.destroy();

});

// 为客户端添加“close”事件处理函数
client.on('close', function() {
    console.log('Connection closed');
});
查看回复

回复 (8)

Y
yjhjstz#1·10 年前
N
nyrf#2·10 年前
引用 yjhjstz看看 http://alinode.aliyun.com/blog/6

@yjhjstz 这里在client把汉字编码成gbk,但提交时还是提交的utf8的吧。

M
magicdawn#3·10 年前

这样... untitled5.png

const iconv = require('iconv-lite');

client.write( iconv.encode('中文', 'gbk') );  //这里就提交就乱码了
Y
yjhjstz#4·10 年前

write 发送时是用二进制流,编码成 gbk , 发送出去就是 GBK 流啦。 当然请发送 Buffer, 否则 this.defaultEncoding = options.defaultEncoding || 'utf8'; 还是默认编码 string. @nyrf

N
nyrf#6·10 年前
引用 magicdawn这样...

@magicdawn 我试下,谢谢

N
nyrf#7·10 年前

用 @magicdawn 的方法解决了,谢谢

Y
yjhjstz#8·10 年前

如果追求性能,可以用alinode

参与回复
登录后即可参与回复。登录