Skip to content

RSS订阅乱码

主题在做RSS订阅时,发现了订阅链接在浏览器上打开后显示乱码。经过查找文档, 在网上寻找答案, 最终解决。

因为xml作为rss的信息载体,需要通过专用RSS订阅器解析后才能被用户所阅读。当就这个方面讲,讨论RSS在浏览器上打开乱码是无意义的。

所以本文要探讨的是,为什么XML这么成熟的文本格式,在浏览器上打开有可能乱码?

RSS一种信息聚合协议,可以让用户高效的订阅特定信息。RSS和html一样都是通过http进行传输,不一样的是,头部信息Content-Type的内容不同。

而对于RSS,主流有三种Content-Type:

1. application/rss+xml
2. application/atom+xml
3. application/xml

我的问题不是出在xml上,而是响应头Content-Type内容少了charset编码

我部署在nginx 上面, 通过添加charset编码可以解决

config

server {

	# SSL configuration

	listen 443 ssl;
	listen [::]:443 ssl;
	
	server_name #主机名;

	root 文件地址;
	index index.html index.htm index.nginx-debian.html;

	ssl_certificate SSL文件.cer;
	ssl_certificate_key SSL文件.key;
	ssl_session_timeout 5m;
	ssl_protocols TLSv1.2 TLSv1.3;
	ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 
	ssl_prefer_server_ciphers on;

	add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
	add_header X-Content-Type-Options nosniff;
	add_header X-Frame-Options DENY;

	# 设置字符集
	charset utf-8;

	location / {
		try_files $uri $uri/ =404;
        # 设置字符集
		charset utf-8;
	}
}

上次更新于: