.Net Core使用GB2312编码

.Net Core默认是UTF8编码,但有些时候需要使用GB2312编码

Encoding.GetEncoding("GB2312")

但代码运行时候会报错误

No data is available for encoding 936.

这时需要引用Nuget包

System.Text.Encoding.CodePages 4.3.0

再在 Startup 的构造函数中加上一行代码

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

 

GAE UTF-8编码网页错位问题的解决

今天为博客增加Witget,稍微修改了一下模板,随后发现网站出现错位(正常是居中的,变靠左了),马上回滚修改重新上传,错位依旧,于是Google一下,大部分人都说是因为头部没有添加

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

可是我很确定代码是有写的,而且用IE查看源代码也是有这句的,看来只能靠自己去寻找解决问题了

用IE8的[F12]工具发现,错位的原因是“<!DOCTYPE”的内容被解析到<body>里面去了

查看源代码又正常,这是什么原因呢?

经过不断的抓包发现,网页最前端有1个字节大的位置东西,肉眼无法分辨,忽然想到这是UTF-8的BOM信息,IE没有把它过滤掉,直接放在一起解析了,导致出现解析混乱

最后把文件保存为UTF-8(无签名),上传,问题解决

大部分编辑器默认保存的UTF-8文件都是带签名的,要注意保存时的高级选项选择