JSP 中的字符集编码与乱码问题

深入介绍了 JSP 中的编码与乱码问题,分析对比了 page 指令中的 pageEncoding 属性和 contentType 属性,还对 JSP 与 servlet 及 HTML 的关系作了一个简要介绍。

在说完了网页中的编码与乱码(),servlet 中的编码问题后,这次来探讨一下 JSP 中的编码与乱码问题。

在之前,曾谈到过 JSP 与 HTML 间的关系,JSP 本质上是一个 HTML 的模板,用于在服务端动态生成 HTML,这点跟 servlet 是类似。

其实 JSP 本质就是 servlet,一个 JSP 页面它会被编译成一个 java 文件,实际上就是一个 servlet 类(或其子类,在文章的后面会具体讨论这个问题)。

继续阅读“JSP 中的字符集编码与乱码问题”

Java servlet 使用 PrintWriter 时的编码与乱码

介绍了 Java servlet 使用 PrintWriter 时的编码与乱码问题,并探讨了 PrintWriter 的缺省编码与普通字符流的缺省编码的差异。

在前面的网页中的编码与乱码系列中(),曾多次提到使用 servlet 方式构建的动态响应流,不过在那里都是直接使用字节流的方式,不过,更为常见的方式是使用字符流。而在前面,又谈到了 Java 字节流与字符流的话题()。

有了前面的基础,现在来说下 Java servlet 中使用字符流,也即是 PrintWriter 时的编码与乱码问题。

继续阅读“Java servlet 使用 PrintWriter 时的编码与乱码”

Java 字节流与字符流(4)

怎样算是“一个字符”?

在这一篇,我们谈论最后一个话题,就是“到底怎样才算一个‘字符’”?

其实这个话题在字符集与编码(五)——代码单元及 length 方法中和文本在内存中的编码(1)——乱码探源(4)也有所涉及,这里结合字符流的话题再综合深入探讨它一下,并且还将涉及一个 unicode 组合字符及正规化的话题。(这在前面也没有涉及过的)

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

网站全面切换到 https

现在这个网站的访问已经全面切换到 https 了,无论是裸域名的 xiaogd.net,还是子域名的 exp.xiaogd.net 都是如此。

本来上个月切换到 nginx 时就想一并弄了的,不过很不幸那段时间领导们正好在开会,寡妇网(g.f.w)卡得特别死,导致都没有办法访问外网的  Let’s Encrypt 去申请证书,所以又拖了段时间。(也正好有理由偷偷懒~~)

另外也配置了 301 的跳转,如果你访问 http,会跳转到 https,换言之已经不能用 http 来访问了。暂时的处理是这样,如果以后发现 https 访问较慢的话,可能也会切换回去 http,或者两种方式并存,由用户自行选择,这个运行一段时间后再看看。

其实对于一个博客网站来说,是否开启 https 其实并不是很重要,不过 https 现在是一个趋势,早晚会来的,所以“早死早超生”吧,就这样……

 

web server 切换到 nginx

web server 从 apache 切换到 nginx。

之前没有注意 nginx 不支持 apache 那种 .htaccess 式的配置,导致永久链接(permalinks)失效,现已在 nginx 中配置 rewrite 规则,永久链接已经 OK 了。如果还发现有不能访问的,请留言,谢谢!

另:子域名的 https 暂时还没有配置。

关于微积分的一个精彩视频

今天看了关于微积分的一个系列视频,还是很不错的。制作者非常用心,特别是用了相当多的动画技术来演示一些重难点部分。在 bilibili 的观看地址如下:

https://search.bilibili.com/all?keyword=3BLUE1BROWN&from_source=video_tag

也可以在 youtube 上看到,感兴趣的可以自行在上面搜索 3blue1brown 这位作者。

我觉得像微积分这样比较复杂抽象的东西,已经很难用一种静止地文字的形式去讲述它,比如像现在许多教科书所采用的形式,甚至说大量运用图片都很难讲述清楚许多复杂的概念。视频化,动画化我觉得是未来的趋势。

其实编程方面的许多知识也同样面临同样的问题,许多复杂的东西已经很难用一种静止的文字的形式去讲述。

计算机及相应的编程技术,理应成为一种强大的工具,在人类认知及自我迭代升级过程中发挥它的强大作用。

何不食肉糜与何不努力

为什么说“努力”其实也是一种天赋……

据说是晋惠帝执政时期,有一年发生饥荒,百姓没有粮食吃,许多百姓因此活活饿死。消息报到宫中,naive 的晋惠帝来了一句:“百姓无粟米充饥,何不食肉糜?”(百姓肚子饿没米饭吃,为什么不去吃肉粥呢?)一不小心就闹了一个大笑话。

现代的晋惠帝在我看来则是一些“奋斗论”者,他们常说,你不成功,那是因为你没有努力奋斗;而他们之所以成功,是因为他们努力奋斗了。

曾经有一段时间有这么一句话很流行:“以绝大多数人努力程度之低,根本轮不到拼天赋的地步”。然而我并不赞同这样的话。 继续阅读“何不食肉糜与何不努力”

Java 字节流与字符流(3)

在上一篇中比较了使用字节流和字符流来读取(写入)文本文件的优劣后,这一篇主要探讨缺省编码这个主题。

字符流使用缺省编码

通过前面的例子,已经得出了一个结论:字符流=字节流+编码。

可以在构建字符流时显示传入编码参数,那么所得到的字符流就会以该编码来编码(encode)解码(decode)字节流,这会给文本数据处理带来极大方便。

但有时,构建字符流时也可以不传入编码参数,比如如下直接构建一个 InputStreamReader :

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

Java 字节流与字符流(2)

在上一篇中介绍了字节流与字符流的关系,这一篇主要给出一些具体的代码示例。

使用字节流读取文本文件

上篇中说到,无论是字符流还是字节流,都可以用于读取文本文件,特别是对于一整个文件的读取,两者的差别并不大。来看一个具体的示例,假如有如下 gbk 编码的 txt 文件一枚,具体内容为“hi你好”,对应二进制如下:

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