网站建设资讯

NEWS

网站建设资讯

js处理中文乱码记录/nodejs+expresserror413-创新互联

#------------------------------2019-02-19日更新---------------------------
刚写了一个接口,通过shell的curl往nodejs邮件接口提交数据,然后发送邮件,格式如下:

网站建设哪家好,找创新互联建站!专注于网页设计、网站建设、微信开发、小程序制作、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了西峡免费建站欢迎大家使用!
curl --connect-timeout 5 -m 10 -G  "https://xx.xxx.com/interface?ac=mail&&subject=账号信息&text=(xxx)您的账号为:xxxx,密码为:xxxx,请妥善保管您本人的账号密码!&toUser=$user"

接收到的信息为:
subject,text,toUser: ***账号信息 (xxx)您的***账号为您的手机号,密码为:xxx,请妥善保管您本人的´¦å·å¯†ç ,如密,xxx@xxx.com

这时我们就要用到下面说到的方法:

decodeURI(decodeURIComponent(escape(text)), "UTF-8")

就不会是乱码了:

text: (xxx)您的账号为:xxxx,密码为:xxxx,请妥善保管您本人的账号密码!

#########################
在ajax提交数据时,由于中文全角字符等等问题导致服务器端接收到后显示乱码,具体表现为:\u00000\u000023等等(我本身想还原一下错误场景,尽然出现不了了,等下次在出现的时候,我在把乱码贴出来,下面具体讲解决方法):
细节原因不解释,自己可以去百度
乱码:

var n = $("#id").html();
$.ajax({
    type: 'post',
    dataType: 'json',
    url: '/',
    contentType: "application/x-www-form-urlencoded; charset=utf-8",
    data: n,
    success: function(data) {
        console.log(data);
    }
});

解决后:

var n = $("#id").html();
var _n = encodeURIComponent((encodeURI(n, "UTF-8")));

$.ajax({
    type: 'post',
    dataType: 'json',
    url: '/',
    contentType: "application/x-www-form-urlencoded; charset=utf-8",
    data: _n,
    success: function(data) {
        console.log(data);
    }
});

其实就加了encodeURIComponent encodeURI

在服务器端解码:

decodeURI(decodeURIComponent(escape(bodys)), "UTF-8")

顺便记录一下js在encode之后post提交到nodejs后端的时候,nodejs报413错误,其实修改方法很简单,修改下面两行即可(50m是不是有点大呀......):

app.use(bodyParser.json({limit: '50mb'}));
app.use(bodyParser.urlencoded({limit: '50mb', extended: true}));

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


标题名称:js处理中文乱码记录/nodejs+expresserror413-创新互联
文章来源:http://cdweb.net/article/dehsip.html