resin4 html乱码,解决resin下jsp中文一直乱码(示例代码)

工作中遇到一个乱码问题:

项目编码格式统一指定为UTF-8,jsp文件,jsp文件头pageEncoding设置为UTF-8,resin/conf/app-default.xml 中加入 UTF-8,在访问时还是

显示为乱码。

最终解决方法: jsp文件头中加入contentType="text/html;charset=utf-8"

至于原理,看下下面,从网上找的:

关于JSP页面中的pageEncoding和contentType两种属性的区别:

pageEncoding是jsp文件本身的编码

contentType的charset是指服务器发送给客户端时的内容编码

JSP要经过两次的“编码”,第一阶段会用pageEncoding,第二阶段会用utf-8至utf-8,第三阶段就是由Tomcat出来的网页,用的是contentType。

第一阶段是jsp编译成.java,它会根据pageEncoding的设定读取jsp,结果是由指定的编码方案翻译成统一的UTF-8 JAVA源码(即.java),如果pageEncoding设定错了,或没有设定,出来的就是中文乱码。

第二阶段是由JAVAC的JAVA源码至java byteCode的编译,不论JSP编写时候用的是什么编码方案,经过这个阶段的结果全部是UTF-8的encoding的java源码。

JAVAC用UTF-8的encoding读取java源码,编译成UTF-8 encoding的二进制码(即.class),这是JVM对常数字串在二进制码(java encoding)内表达的规范。

第三阶段是Tomcat(或其的application container)载入和执行阶段二得来的JAVA二进制码,输出的结果,也就是在客户端见到的,这时隐藏在阶段一和阶段二的参数contentType就发挥了功效

contentType的設定

pageEncoding 和contentType的预设都是 ISO8859-1. 而随便设定了其中一个, 另一个就跟着一样了(TOMCAT4.1.27是如此). 但这不是绝对的, 这要看各自JSPC的处理方式. 而pageEncoding不等于contentType, 更有利亚洲区的文字 CJKV系JSP网页的开发和展示, (例pageEncoding=GB2312 不等于 contentType=utf-8)。

在Tomcat中如果在jsp中设定了pageEncoding,则contentType也跟着设定成相同的编码了,但是在resion中就不是,resin中还会用默认的,这点通过查看编译后的类servlet java文件就可以看到这一点,而问题恰恰就出在这里,所以,在jsp中,如果是在resin下最好还是明确的单独设定这2个属性。

jsp文件不像.java,.java在被编译器读入的时候默认采用的是操作系统所设定的locale所对应的编码,比如中国大陆就是GBK,台湾就是BIG5或者MS950。而一般我们不管是在记事本还是在ue中写代码,如果没有经过特别转码的话,写出来的都是本地编码格式的内容。所以编译器采用的方法刚好可以让虚拟机得到正确的资料。

但是jsp文件不是这样,它没有这个默认转码过程,但是指定了pageEncoding就可以实现正确转码了。

举个例子:

大都会打印出乱码,因为输入的“你好”是gbk的,但是服务器是否正确抓到“你好”不得而知。

但是如果更改为

这样就服务器一定会是正确抓到“你好”了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要查看Resin4的版本号,可以使用以下命令: ``` /path/to/resin4/bin/resin.sh version ``` 其中,`/path/to/resin4`是你Resin4安装的路径。执行该命令后,你将看到输出的版本号信息。 ### 回答2: 要查看Resin4的版本号,可以通过以下步骤进行: 1. 打开Resin4的安装目录,一般情况下默认安装在" C:\resin"或者"/usr/local/resin"等路径下。 2. 进入Resin4的安装目录后,可以找到一个名为"version"的文件,该文件记录了Resin4的版本信息。 3. 打开"version"文件,你可以看到一行类似于"4.0.65 (built Mon, 20 Aug 2020 05:18:36 PDT)"的文字,数字串"4.0.65"即为Resin4的版本号。 4. 另外,你还可以在Resin4的管理界面中查看版本号。在运行Resin4的服务器上输入"localhost:8080/resin-admin"即可访问管理界面。在管理界面的左侧导航栏中,找到"System"或者"Server"选项,点击进入。在显示的信息中,你可以找到Resin4的版本号。 通过以上步骤,你可以轻松地查看Resin4的版本号。 ### 回答3: 要查看Resin4的版本号,可以按照以下步骤进行操作: 1. 登录Resin4服务器。可以使用SSH或其他远程访问工具登录服务器。 2. 打开Resin4的安装目录。一般情况下,Resin4的安装目录位于服务器的特定位置,例如`/opt`或`/usr/local`等。 3. 在安装目录中找到Resin4的启动脚本,通常命名为`resin.sh`或`resin.bat`,具体文件名可能有所不同。 4. 使用文本编辑器打开启动脚本文件。 5. 在脚本文件中查找关于版本号的信息。根据不同的脚本和配置,可能使用不同的命令来获取版本号。可以尝试查找类似`version`、`info`、`ver`等关键词。 6. 找到版本号信息后,记录下来或者在终端中打印出来。 7. 如果无法在启动脚本中找到版本号信息,可以尝试查找Resin4的配置文件。通常情况下,配置文件位于安装目录的`conf`文件夹中。 8. 打开配置文件,查找关于版本号的配置项。常见的配置项可能包括`version`、`resin.version`等。 9. 找到版本号信息后,记录下来或者在终端中打印出来。 10. 如果以上方法都无法获取版本号,可以尝试在Resin4官方网站或其它相关资源中寻找答案。官方文档、论坛、社区等都可能提供了关于查看版本号的方法和技巧。 总之,通过查找Resin4的启动脚本或配置文件,就能获取到Resin4的版本号信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值