Java 字节流与字符流(1)

Java 的 IO 系统是比较庞杂的,各种流特别多,其中有一种就是字符流。

在本系列前面的一些文章中,也曾涉及过字符流的话题,不过没有详细展开讨论,这次准备具体综合地谈一谈。

你可能听过不少关于字节流与字符流对比的介绍,不过严格地说,我认为把“字节流”和“字符流”去对比这种说法不是特别妥当,为什么呢?

继续阅读“Java 字节流与字符流(1)”

子域名启用 https 的尝试

现在可以通过 https 访问我的子域名:https://exp.xiaogd.net/

不过暂时还是不建议这样去访问,因为主站 //xiaogd.net 还没有启用,导致从子域名跳到主站时会出现安全警告。

因为在跳转链接上使用了跟随协议式的写法,像这样://xiaogd.net

所以现在子域名上也还是两种方式并存,通过 //exp.xiaogd.net/ 这种不安全的方式访问也还是能支持,我也没有去做跳转。

其实我的主站是个“裸域名”,正常来说应该是这样:http://www.xiaogd.net,现在 https 证书是个生意,我在腾讯云上申请它提供的免费证书时,发现免费的证书并不支持“裸域名”,只能支持像比如 www.xiaogd.net 这样的;或是我现在的这个子域名这样的:exp.xiaogd.net。

而且这样的一个证书还只是免费一年而已~

所以这个证书没有办法支持主站的域名。当然,要在主站全面支持 https,还要把网页中的所有站内链接一一调整成 https 开头的,

或者是前面说到的跟随协议式的写法。

所以你如果现在开始建站,建议一步到位使用 https,免得后面折腾。

当然,像 wordpress 系统的话,它本身在设置上有一些支持,可以较容易切换到 https;自己写的文章内的链接也有批量查找替换的插件。

另外,其实有其它免费的方案,比如这个: Let’s Encrypt,裸域名,多个域名都是没有问题的,当然它的证书也是有期限的,不过也有相关的自动化工具能在到期时帮你自动延期,具体的这里就不介绍了。

网页中的编码与乱码(5)

深入探讨了缺省情况下浏览器的响应行为,包括静态和动态的响应,最后,对所有情况作了一个简单总结。

在上一篇我们谈论了 BOM 编码的页面,并知道了它是有最高优先级的。而这一篇将讨论最后的一个主题,也就是缺省的情况。既然名为缺省,也就不难想到,它的优先级是最低的,也即是在其它情况下都无法确定编码时,才轮到它上场。

继续阅读“网页中的编码与乱码(5)”

网页中的编码与乱码(4)

深入介绍了 html 页面使用 BOM 编码的情况,它的优先级为什么最高以及具体的静态页面和动态响应的测试示例。

这一篇将介绍 BOM 在 html 页面编码中的运用。在最前面曾提到,它的优先级实际上是最高的,在这里,将具体介绍什么是 BOM,还会解析为什么它的优先级最高,然后还会构建一些具体的测试来验证这一点。

继续阅读“网页中的编码与乱码(4)”

对“有点尴尬诶!该页无法显示”情况的一个说明

最近发现网站出现不少 404 的访问,看了一下是对 url 错误二次编码造成的。

如果出现 404 ,该页无法显示的情况,您的浏览器可能对 url 进行了错误的二次编码(或者是其它的转发环节),‘%’被编码成了 ‘%25’。

% 的 ASCII 码 正好是 25(十六进制),%25 就是 % 本身的转义表示,但它是不需要再转义的。

正确形式://xiaogd.net/%XX%XX…
错误形式://xiaogd.net/%25XX%25XX…

错误形式中,% 被二次转义,变成了 %25,导致了 404 错误。

在后台的 access_log 中,找到这些带有 %25 的错误 url,查看其浏览器用户代理 userAgent 的值多为类似以下:

“Mozilla/5.0 (iPhone; CPU iPhone OS 9_3_4 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13G35 QQ/6.5.3.410 V1_IPH_SQ_6.5.3_1_APP_A Pixel/750 Core/UIWebView NetType/2G Mem/117″

关键词:iPhone,AppleWebKit,QQ,UIWebView

估计为 iphone qq 浏览器内核的 bug。我已在 404 页面添加相应说明。(sorry for that,and don’t blame me~)

如果您出现无法访问的情况,欢迎留言告诉我具体的情况,谢谢!(不过如果你用手机访问,应该是不会有留言框出现~~)

网页中的编码与乱码(3)

深入介绍了响应头 Response Headers 中的 Content-Type 中的 charset 信息的应用,包括许多在静态文档和动态文档中的实验与测试的细节,以及一些具体配置和与文档内编码声明的优先级问题。

在上一篇说完了如何通过文档内的编码声明来确定网页的编码通过文档内的编码声明来确定网页的编码,这一篇则开始具体讲述如何通过响应头下的 Content-Type 条目中的 charset 信息来确定文档的编码,包括如何去配置这个响应头,以及一些具体的实验,还有它与文档内编码声明的优先级选择问题。

继续阅读“网页中的编码与乱码(3)”

网页中的编码与乱码(2)

深入介绍了文档内编码声明的应用,包括许多在静态文档和动态文档中的实验与测试的细节,以及其它的一些注意事项等。

接着上一篇中的讨论,也是先从“文档内编码声明”讲起,因为它是最直观也最容易控制的。

不过事实上也没有那么容易,它还是很容易受各种因素干扰,下面会详细介绍整个过程,囊括了静态文档响应和动态文档响应两种情况,以及各种其它注意事项。

继续阅读“网页中的编码与乱码(2)”

网页中的编码与乱码(1)

授人以鱼不如授人以渔,在这里我会告诉有关网页中的编码的一些事实与结论,但我更希望传达给你分析问题的方法,当你遇到乱码困扰时,你能够独立迅速地分析并解决问题。

在之前谈了很多关于字符集编码与乱码的基础知识,可以说,如果你掌握了这些,对于各种乱码问题,就有了一个良好的基础,基本能够分析甚至独立地解决各类的乱码问题。

自然,基础问题的重要性无需多言,但另一方面,具体的问题也同样很重要。据我的观察,具体的问题有很多是关于 web 开发方面所碰到的乱码,尽管从原理方面来说,道理都是一样的,但导致问题产生的许多细节还是值得一说的,所以这次也打算具体谈谈这些方面。

继续阅读“网页中的编码与乱码(1)”

在开发者工具中查看响应头的字符集编码信息

介绍了如何在浏览器的开发者工具中查看响应头(Response Headers)下的 Content-type 中的字符集编码信息

要想查看某个文档的响应头中的字符集编码信息,以 Chrome 浏览器为例,首先打开“开发者工具”:

可以按快捷键 F12,或单击窗口右上角的选项按钮,然后选择 “更多工具–开发者工具”即可打开“开发者工具”窗口。

如下图打开我的网站为例所示:

继续阅读“在开发者工具中查看响应头的字符集编码信息”