- 浏览: 1993364 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (509)
- JavaEE (122)
- Oracle数据库 (29)
- JavaScript (37)
- SAP (5)
- MySql数据库 (7)
- JavaSE (4)
- Ajax (1)
- jQuery (13)
- SSH框架 (36)
- Web Service (10)
- JSF框架 (2)
- JBPM (0)
- ireport报表 (2)
- ibatis (5)
- Hibernate (31)
- JSP (11)
- Tomcat 服务器 (20)
- Other (19)
- JavaWeb (4)
- Maven (11)
- OSWorkFlow (10)
- HTML (13)
- Exception汇总 (7)
- SVN (2)
- 笑话 (1)
- JSTL (1)
- WebSphere Message Broker (13)
- ANT命令 (3)
- Liunx (12)
- Struts2 (26)
- Eclipse (6)
- DOS (3)
- Flex (11)
- WebSphere (1)
- 开发常用工具 (3)
- Junit (2)
- EJB (4)
- Struts1.2 (2)
- Jboss (1)
- Android (2)
- Java框架源码解析 (1)
- Spring (4)
- MyBatis (6)
- SpringMVC (4)
- Jetty (2)
- 数据库表设计 (1)
- SSO (4)
最新评论
-
贝塔ZQ:
也可以试试PageOffice插件,觉得更简单点
Jxl操作Excel设置背景、字体颜色、对齐方式、列的宽度 -
jia1208:
...
Could not publish server configuration for Tomcat v6.0 Server at localhost. -
u011274527:
赞
java.io.EOFException java.io.ObjectInputStream$PeekInputStream.readFully 错误 -
旭旭小牛啦:
怎么没哟了,继续赛
jQuery 选择器 -
wzw3919:
100行会报空指针
Java 解压缩zip文件
在项目测试阶段,测试人员会输入一些特殊字符,比如:<table>、<./或<这样的字符时,页面就会出现错误, 如果是导出,导出的Excel也会出现问题,或者直接输出的页面会把用户输入的<、>、&及 都转化成<、>、&及空格,原因是用java代码直接取的并没有对特殊字符做转义。
因为Html中的<, >,&有特殊含义,(前两个字符用于链接签,&用于转义),不能直接使用。使用这三个字符时,应使用它们的转义序列。
& 的转义序列为 & amp 或 & #38;
< 的转义序列为 & lt; & #60;
> 的转义序列为 & gt; & #62;
前者为字符转义序列,后者为数字转义序列。
例如 & lt; font >显示为<font>,若直接写为则被认为是一个链接签。
需要说明的是:
a. 转义序列各字符间不能有空格;
b. 转义序列必须以“;”结束;
c. 单独的&不被认为是转义开始。
d. 区分大小写
另一个需要转义的字符是双引号””,它的转义序列为"或"
这里需要特殊注意的是一定要对&进行转义,有的朋友只对<、>甚至引号转义,但并没有对&进行转义,&是Html转义字符的开始,如果在XML文档中使用类似"<" 的字符, 那么解析器将会出现错误,因为解析器会认为这是一个新元素的开始。所以必须要对&进行转义。
解决方法是定义个工具类Tools。
/** * 替换一个字符串中的某些指定字符 * @param strData String 原始字符串 * @param regex String 要替换的字符串 * @param replacement String 替代字符串 * @return String 替换后的字符串 */ public static String replaceString(String strData, String regex, String replacement) { if (strData == null) { return null; } int index; index = strData.indexOf(regex); String strNew = ""; if (index >= 0) { while (index >= 0) { strNew += strData.substring(0, index) + replacement; strData = strData.substring(index + regex.length()); index = strData.indexOf(regex); } strNew += strData; return strNew; } return strData; } /** * 替换字符串中特殊字符 */ public static String encodeString(String strData) { if (strData == null) { return ""; } strData = replaceString(strData, "&", "&"); strData = replaceString(strData, "<", "<"); strData = replaceString(strData, ">", ">"); strData = replaceString(strData, "'", "'"); strData = replaceString(strData, "\"", """); return strData; } /** * 还原字符串中特殊字符 */ public static String decodeString(String strData) { strData = replaceString(strData, "<", "<"); strData = replaceString(strData, ">", ">"); strData = replaceString(strData, "'", "'"); strData = replaceString(strData, """, "\""); strData = replaceString(strData, "&", "&"); return strData; }
第一个函数replaceString转义单个字符,第二个函数encodeString为转义包括&、<、>、’和\这几个特殊字符,第三个函数decodeString是还原这几个特殊字符。
因此在需要转义的时候调用Tools. encodeString()就可以了。
需要说明的是导出Excel是比较特殊的,因为如果有<table>这样的内容,是Excel保留字的,会造成Excel表格的混乱,如果要是用这个工具类做转义的话,会出现显示出<table>这样的内容,它会认为这是个字符串,并且不太好再把这样的字符串转义过来,经过测试如果有像“<>& ”或其它的Html标签,Excel会认为这样的内容为字符串,并不会引起错误,所以我可以放心的认为只有<table>这样的内容才会引起错误。那么怎么才能解决这个问题呢,既然只有<和>才会引起错误,那么何不把半角的尖括号转成全角的尖括号呢,经过测试后,发现真的可以解决,而且是个很高明的方法,因此就这样找到了解决方案。
还有一点是,无论用户输入多少个连续的空格,在页面中显示都为一个空格,这是Html本身就有的,因为Html只认 为标准的空格,解决方案是把普通空格转义为 ,但涉及的范围之广,影响的地方之大,是我们必须要考虑的因素,不光是像Display Tag标签和自定义的标签,而且struts本身的标签也要进行修改,这样一来,工作量大不说,不知道会不会引起这样那样的问题,而且并不影响正常运行,所以经过再三考虑,还是决定不予修改。
转载:
http://www.cnblogs.com/long_/archive/2011/05/03/2035613.html
发表评论
-
解决Java服务器端插入数据到Mysql中乱码问题--简单几步轻松解决乱码问题
2015-11-13 17:52 2422当写入数据到mysql数据库中发生乱码时.请检查以下几个地 ... -
设计模式之-代理模式-Proxy
2015-04-28 21:24 879使用代理模式之前需要知道代理模式能做什么? 能有哪些好处以及 ... -
构建高并发、服务化、低耦合企业级脚骨:springmvc+mybatis+restfull+webservice+bootstrap html5
2015-04-14 01:17 85SpringMVC + Mybatis + SpringS ... -
教您搭建大型互联网企业架构:springmvc+mybatis+restful+webservice+quartz+bootstrap
2015-04-13 21:54 99SpringMVC + Mybatis + SpringS ... -
大型互联网服务集成平台:springmvc+mybatis+restful+webservice+quartz+bootstrap html5
2015-04-13 21:49 81SpringMVC + Mybatis + SpringSe ... -
大型互联网服务集成平台:springmvc+mybatis+restfull+JMS+webservice+bootstrap
2015-04-12 23:36 22SpringMVC + Mybatis + SpringS ... -
大型互联网服务集成平台:springmvc+mybatis+restfull+JMS+webservice+bootstrap
2015-04-12 23:33 83SpringMVC + Mybatis + SpringS ... -
Maven构建大型互联网架构springmvc+mybatis+Restfull+Webservice+Bootstrap
2015-04-12 23:28 71SpringMVC + Mybatis + SpringS ... -
maven构建高大上开源架构:springmvc+mybatis+rest+bootstrap html5
2015-04-12 23:25 23SpringMVC + Mybatis + SpringS ... -
手机App后台架构:Springmvc+SpringSecurity+mybatis+Rest+Quartz+Bootstrap Html5( Maven构建)
2015-04-09 01:39 76APP后台架构Maven构建,模拟大型互联网架构,支持高并发 ... -
maven构建springmvc+mybatis+rest+webservice+bootstrap html5(cms开源项目)
2015-04-09 01:21 85SpringMVC + Mybatis + SpringS ... -
Java正则表达式
2014-11-26 21:03 1227Java正则表达式: package pack.ja ... -
Cannot convert value of type [org.springframework.cache.ehcache.EhCacheCache
2014-11-10 20:03 6266错误信息: [org.springframework.be ... -
Collections工具类中的frequency方法统计单词出现的次数
2013-11-05 21:30 2827最近发现了一个Collections中有一个很好用的方法: ... -
Java 压缩Excel文件生成.zip文件
2013-05-08 22:22 7955首先创建文件目录,然后生成Excel文件到创建的目录下, ... -
Java 解压缩zip文件
2013-05-08 13:14 8362不借助于其他的第三方 ... -
Jxl操作Excel设置背景、字体颜色、对齐方式、列的宽度
2013-04-06 22:26 57809最近项目中需要用到导出Excel文件,以下是我写了一个通过j ... -
java获取字节的长度.
2012-05-17 22:00 6756我们经常要获取中文,数字,或者英文字符所占字节的长度,下面就列 ... -
StringBuffer-reverse()字符反转功能
2012-05-17 21:42 7100在书上看到一个这样的例子, 采用最简便的方式把一串字符串反转过 ... -
java 打开IE
2012-05-23 22:14 1309Runtime.getRuntime().exec(" ...
相关推荐
然而,在XML中直接使用一些特殊字符,比如大于(>)、小于(<)、等于(=)、单引号(')和双引号(")等,可能会导致XML解析错误,因为这些字符在XML文档中有特定的含义。为了解决这个问题,Mybatis提供了一些处理...
在XML(可扩展标记语言)中,特殊字符的处理是一项重要的技术细节,它直接关系到文档的正确解析和展示。由于XML是一种用于标记文本的元语言,它使用一系列的规则来定义数据结构和数据类型,因此,对于XML文档中可能...
为防止这种情况,我们需要对特殊字符进行转义,例如将`转义为`<`,`>`转义为`>`,`"`转义为`"`,`'`转义为`'`,`&`转义为`&`,`\`转义为`\`。 2. **Spring MVC的解决方案**: - Spring MVC...
- **特殊字符**:XML文档中可能存在特殊字符,如`、`>`、`&`等,这些在XML中具有特殊含义,需要正确转义。如果未正确处理,可能导致解析错误。 - **浏览器兼容性**:描述中提到的谷歌浏览器的XML解析问题可能是指...
如果属性值中包含特殊字符,可以使用 HTML 实体进行转义,例如 `可以写作 `<`: ```xml ;04/12/2006>"> ``` XML 文档类型定义(DTD,Document Type Definition)用于定义 XML 文档的结构和元素的约束。DTD ...
在信息技术领域,尤其是Web开发和数据传输方面,经常会遇到需要通过XML格式传输特殊字符或加密数据的情况。XML能够传输大部分的可见字符,但是一些特殊的控制字符(如换行符\n、制表符\t等)以及某些特殊符号(如<、...
- **避免转义特殊字符**:使用CDATA段包装文本。 - **格式如**:`<![CDATA[...]]>`。 #### XML编码 - **支持多种字符集**:如UTF-8、UTF-16等。 - **声明字符编码**:`<?xml version="1.0" encoding="UTF-8"?>`。 ...
这包括但不限于:每个XML文档必须有一个根元素,元素标签必须正确闭合,特殊字符需要转义等。此外,XML还支持命名空间(Namespaces),以避免标签名冲突。 XML解析器是处理XML文档的关键,分为DOM(Document Object...
2. 数据转换:可能需要对XML数据进行预处理,比如将特殊字符转义,以适应小程序的显示规则。 3. 性能优化:大量XML数据可能导致性能问题,可以考虑分段加载或使用虚拟列表来提高用户体验。 4. 样式控制:对于HTML...
- **特殊字符处理**:XML有特定的字符规则,例如`, `>`, `&`等需要被转义。 - **性能考虑**:对于大数据量的`Map`,递归转换可能会影响性能,需优化算法或使用更高效的库。 #### 五、总结 将`Map`转换为XML不仅...
- 特殊字符需要用实体引用。 #### 7. 字符转义与引用 - **字符转义**:`<`表示`,`>`表示`>`,`&`表示`&`,`"`表示`"`,`'`表示`'`。 - **引用**:使用实体声明来创建引用,例如`<!ENTITY ...
7. 特殊字符需要转义,例如"&"用"&","用"<",">"用">"等。 XML还支持字符数据段(CDATA段),它允许在元素中包含不受解析的文本。实体声明则允许定义和使用特殊字符或字符串的引用。 XML的验证通常通过...
3. **命名规则**:XML元素和属性名遵循严格的命名规则,如必须以字母或下划线开头,不能包含空格或特殊字符等。 **二、XML解析** 1. **DOM解析**:Document Object Model(DOM)模型将整个XML文档加载到内存中,...
XML编码仅处理特殊字符,但不涉及安全性。如果需要加密XML内容,可以使用如AES(Advanced Encryption Standard)等加密算法。在C++中,可以使用开源库如Crypto++或Botan来实现。首先,你需要将XML字符串转换为字节...
当使用DOMParser解析XML时,需要注意一些特殊字符可能会导致解析错误。例如,未转义的尖括号 `和 `>` 或 ampersand `&` 等。因此,确保在输入XML字符串之前正确转义这些字符至关重要。 总的来说,通过DOMParser和...
3. **处理特殊字符**:XML有预定义的字符实体,如`&`应转为`&`,所以在转换过程中,需要对值进行适当的转义。 4. **生成XML输出**:最后,将构建的XML元素树序列化成字符串,输出为XML文件。 在标签“DTD/XML ...
[CDATA[...]]>`可以避免转义字符的使用,方便包含大量特殊字符的数据的处理。 #### 5. 注释 - XML支持注释,格式为`<!-- 这是一个注释 -->`。 ### XML的应用 #### 1. 数据交换 - XML因其标准化和可扩展性,广泛...
为了在XML文档中包含这些特殊字符,可以使用字符实体引用,例如: ```xml <元素名>元素文本或值<元素名> ``` 其中,"<"代表小于号",是为了避免与XML标签冲突而采用的转义字符。 空元素(empty elements)...
`代表`'`,用于转义特殊字符。 8. **处理指令**:处理指令(Processing Instructions, PI)如`<?target data?>`,用于向处理XML文档的应用程序提供指令。 XML与HTML的主要区别在于,HTML专注于展示,而XML专注于...
CDATA(Character Data)用于标记一段文本,让解析器将其当作纯文本处理,不进行特殊字符转义。 8.实体(Entity): XML中的实体可以是预定义的(如`&`代表`&`),也可以自定义,用于插入特殊字符或引用外部...