首页 编程技术HTTP 请求中文处理要点

HTTP 请求中文处理要点

运维派隶属马哥教育旗下专业运维社区,是国内成立最早的IT运维技术社区,欢迎关注公众号:yunweipai
领取学习更多免费Linux云计算、Python、Docker、K8s教程关注公众号:马哥linux运维

开门见山。
我在使用AngularJS+NodeJS,遇到了好几个中文字符乱码的问题。
1. HTML文件没有写charset,导致HTML文件中的中文在浏览器中显示为乱码。
<--meta-- charset="utf-8">

2. URL含有中文参数。
http://www.utopia-project.com/albums/edit/?album=那年7月
这里的中文参数值,在client端的JS中拼装:
$http({
url: ‘/upload/?album=’ + albumName,
method: ‘GET’,
headers: {‘Content-Type’: ‘application/x-www-form-encoded;charset=UTF-8’}

上面的代码,在Chrome和Safari上都没有问题。但是在IE上,后台获取道的album值为乱码。
解决这个问题的方法是,将上面的代码修改为:
$http({
url: ‘/upload/?album=’ + encodeURIComponent(albumName),
method: ‘GET’,
headers: {‘Content-Type’: ‘application/x-www-form-encoded;charset=UTF-8’}

3. NodeJS接受数据。
NodeJS中接受数据,需要设置字符集为UTF-8。
function signin(request, response){
var loginData = ”;

request.setEncoding(“utf8”);
request.on(“data”, function(data){
loginData += data;
});

4. 中文Cookie值。
Cookie中保存中文,通过AngularJS的ngCookie服务取出来的时候,是乱码。
存:
response.cookie(‘authInfo_name’, authInfo.name, {maxAge: cookieMaxAge});
取:
angular.module(‘signinApp’, [‘ngCookies’]);

$cookies.authInfo_name
上面的方式,antuinfo.name取出来的值为乱码。设置过字符集也无效。
想了一个变通的方法,将Cookie值Base64编码。
存:
response.cookie(‘authInfo_name’, toBase64(authInfo.name), {maxAge: cookieMaxAge});
取:
Base64.decode($cookies.authInfo_teacherName)

本文链接:https://www.yunweipai.com/2874.html

网友评论comments

发表回复

您的电子邮箱地址不会被公开。

暂无评论

Copyright © 2012-2022 YUNWEIPAI.COM - 运维派 京ICP备16064699号-6
扫二维码
扫二维码
返回顶部