<%@ include %>导入的文件乱码

如:

<%
  String ss = (String) session.getAttribute("username");
  if (ss == null || ss == "") {
    out.print("<script>alert(‘非法操作,你想干嘛!‘);window.location.href=‘index.jsp‘;</script>");
    return;
  }
%>

如果把上面的代码直接作为一个.jsp文件的话,在导入的时候,会发现出现中文乱码!即使文件的编码保存格式为utf-8也会乱码的,我猜tomcat会以ISO-8859-1的编码把这个.jsp编入要使用这个文件的另一个jsp文件中,但直接在另一个jsp页面使用如上代码就没问题。

解决方法:

  头部加上<%@ page pageEncoding="utf-8"%>

所以说,<%@ include%>指令也不是完全等同于在jsp页面里直接使用代码,<%@ include%>的文件也要指明编码才得的!

参考:

JSP要经过两次的“编码”,第一阶段会用pageEncoding
,第二阶段会用utf-8至utf-8,第三阶段就是在客户端浏览器里看到的网页, 用的是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就发挥了功效

而include指令就是在第一阶段之前执行的,注意这个是在第一阶段之前,所以,如果包含文件和被包含文件的文件编码不是utf-8,那么,该指令就会工作不太正常,不能正确的把被包含的文件从原来编码转换为包含文件的编码,就会出现乱码现象.
时间: 2024-11-08 10:04:57

<%@ include %>导入的文件乱码的相关文章

导入CSV文件乱码

CSV格式的数据导入乱码,是很常见的一个问题.遇到此问题可试下以下方法: 1. CSV文件导入系统前没有乱码,在导入过程中出现乱码,可尝试改下文件的编码格式: 检查数据无误的csv文件,以记事本方式打开,另存为unicode编码格式.然后将unicode的文件进行导入就可以了. 2. CSV文件,AX在中文环境下,导入中文不乱码,在英文环境下导入中文数据乱码,检查代码: 这种情况出现,很可能是代码中用的CommaIO类,只支持单字节流导致.英文是单字节字符,中文是双字节字符,这就导致在英文环境下

Oracle导入脚本文件乱码问题

用脚本直接导入,Oracle出现乱码 绝大多数情况是Oracle客户端环境变量NLS_LANG的值和数据库字符集不一致导致. (注nls_lang修改的是Oracle客户端字符集的编码,locale命令中的lang是系统的字符集(suse修改在/etc/sysconfig/language)(Redhat在/etc/sysprofile/i18n)) 查看环境变量 echo $NLS_LANG 查看数据库字符集 select userenv('language') from dual; 如果二者

SQLyog客户端 导入sql文件乱码的解决方法

方法一: 通过增加参数 –default-character-set = utf8 解决乱码问题 mysql -u root -p password < path_to_import_file –default-character-set = utf8 方法二: 在命令行导入乱码解决  1. use database_name; 2. set names utf8; (或其他需要的编码) 3. source example.sql (sql文件存放路径) 方法三: 直接粘贴sql文件里的代码 1

微信小程序 使用include导入wxml文件注意的问题

(1)使用inlucde的时,要注意将最后的终止符 / 添加上去,否则不能正常的导入界面内容 <include src="header.wxml"/> (2)引入文件注意的问题 若何header.wxml中内容如下,是不能正确引入的,因为注释中包含了三个'-' , 改成两个就可以了.  作者之前试了半天才发现这个问题. <!-- 注释内容 ---> <text>12312</text> 原文地址:https://www.cnblogs.c

jsp 文件使用 include指令 导入 jspf 分析,及导入jspf 文件后出现乱码问题

1.为什么要导入jspf文件 在做网站开发中,因为有很多的页面的导航栏是相同的,所以我们要把导航栏提取出来,生成一个jspf文件. 然后在jsp页面中使用 include 指令 导入jspf文件,这样可以减少代码量,也可以方便开发以及维护. 比如:<body> <%@include file="/commonguid.jspf"%> </body> 2.在 jsp文件 中导入 jspf文件 出现乱码解决 出现乱码是因为 jsp文件 和 jspf文件

MySql WorkBench 导入sql文件 中文出现乱码

在workbench中导入sql文件. 查看系统的编码. 导入sql文件时出现了如下警告.但是文件是UTF-8.由于包含中文,使用latin1编码方式会出现乱码. 选择UTF-8,出现错误. 不知道什么原因,将sql文件转为UTF-8编码格式还是出现上述错误. 最后在命令行中新建数据库,导入sql文件.查询一下,乱码问题解决. 请问,是什么原因呢??

MySQL命令行导入sql文件时出现乱码解决方案

Note: sql> source F:weibo.sql(执行相关sql文件) sql> select * from sina into outfile "/weibo.txt"(导出相应数据到C:的weibo.txt) 1. mysql 5.0后其客户端仅支持gbk,故可在sql> set names gbk; 例如: set names gbk; /* Navicat MySQL Data Transfer Source Server : localhost_3

20140509-MySQL导入脚本文件,插入数据时显示乱码的解决办法

20140509-MySQL导入脚本文件,插入数据时显示乱码的解决办法 打开CMD输入以下命令: mysql –u root –p 然后输入密码: 在导入脚本文件之前,对字符编码进行设置: charset gbk; 说明:上面的这条语句非常关键,这样不论你在cmd窗口,还是使用客户端输入中文,都能够正确保存了. 建议初学者不要使用SQLyog或者Navicat Premium等客户端连接工具.

解决Excel打开UTF-8编码的CSV文件乱码的问题

解决Excel打开UTF-8编码的CSV文件乱码的问题 引用自:https://en.wikipedia.org/wiki/Comma-separated_values " CSV formats are not limited to a particular character set. They work just as well with Unicode character sets (such as UTF-8 or UTF-16) as with ASCII (although par