日期:2014-05-16  浏览次数:20335 次

jsf原始页面中文与动态嵌入的页面代码的中文编码问题
关于中文
以前不太注意不知道其他的jsf产生的页面代码中文是怎样表示的,现在发现同一页面会有两种表示形式,一种形如适,另一种就是中文显示的中文。
页面嵌入的中文显示字符一般是jsf后台产生的,形如适则是页面原始的中文页面代码被jsf(或者seam或者容器)转换成形如适
页面原始的中文代码,在页面首次编译的时候中文被编译成形如适
页面嵌入的中文显示字符是每次客户端请求页面的时候由jsf生成的
为何会有两种中文编码形式出现在同一页面呢?我认为原因如下:
1、
jsf认为未编译的原始jsf只能用一种字符编码,那就是ISO-8859-1,如果不是ISO-8859-1,编辑器IDE就必须提前转换成ISO-8859-1字符格式,例如把中文转换为形如适,否则都不予保存;在客户端请求页面的时候,这些源码将不在作任何转换直接送到客户端浏览器。
原因2、
客户端向jsf请求的时候,同时告诉JSF自己的当前的编码等等信息,JSF据此将需要嵌入的页面代码转换成客户端的当前的页面代码,这个时候由于已经知道了本次浏览器的接受编码了,就不用形如适这样的编码了,而是直接用指定的编码转换,这就是我们在页面看到的中文字符显示了。
这里引出了另外一个问题就是。形如适表示的utf-8的页面代码好,还是用utf-8显示的中文页面代码好呢?
我认为形如适的页面代码更通用,没有障碍,所有的浏览器都能正确解释,不像以utf-8编码的中文页面代码,如果浏览器用错了编码集,就是乱码。