java对html转移的语言反编译-org.apache.commons.lang3包有个StringEscapeUtils

本文主要是介绍java对html转移的语言反编译-org.apache.commons.lang3包有个StringEscapeUtils,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

StringEscapeUtils


用escapeJava方法转义

用unescapeJava方法反转义

用escapeHtml方法转义

用unescapeHtml方法反转义

用escapeXml方法转义

用unescapeXml方法反转义

用escapeJavaScript方法转义

用unescapeJavaScript方法反转义

源码内容方法

/** Licensed to the Apache Software Foundation (ASF) under one or more* contributor license agreements.  See the NOTICE file distributed with* this work for additional information regarding copyright ownership.* The ASF licenses this file to You under the Apache License, Version 2.0* (the "License"); you may not use this file except in compliance with* the License.  You may obtain a copy of the License at* *      http://www.apache.org/licenses/LICENSE-2.0* * Unless required by applicable law or agreed to in writing, software* distributed under the License is distributed on an "AS IS" BASIS,* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.* See the License for the specific language governing permissions and* limitations under the License.*/
package org.apache.commons.lang3;import java.io.IOException;
import java.io.Writer;import org.apache.commons.lang3.text.translate.AggregateTranslator;
import org.apache.commons.lang3.text.translate.CharSequenceTranslator;
import org.apache.commons.lang3.text.translate.EntityArrays;
import org.apache.commons.lang3.text.translate.LookupTranslator;
import org.apache.commons.lang3.text.translate.NumericEntityUnescaper;
import org.apache.commons.lang3.text.translate.OctalUnescaper;
import org.apache.commons.lang3.text.translate.UnicodeEscaper;
import org.apache.commons.lang3.text.translate.UnicodeUnescaper;/*** <p>Escapes and unescapes {@code String}s for* Java, Java Script, HTML and XML.</p>** <p>#ThreadSafe#</p>* @since 2.0* @version $Id: StringEscapeUtils.java 1148520 2011-07-19 20:53:23Z ggregory $*/
public class StringEscapeUtils {/* ESCAPE TRANSLATORS */public static final CharSequenceTranslator ESCAPE_JAVA = new LookupTranslator(new String[][] { {"\"", "\\\""},{"\\", "\\\\"},}).with(new LookupTranslator(EntityArrays.JAVA_CTRL_CHARS_ESCAPE())).with(UnicodeEscaper.outsideOf(32, 0x7f) );public static final CharSequenceTranslator ESCAPE_ECMASCRIPT = new AggregateTranslator(new LookupTranslator(new String[][] { {"'", "\\'"},{"\"", "\\\""},{"\\", "\\\\"},{"/", "\\/"}}),new LookupTranslator(EntityArrays.JAVA_CTRL_CHARS_ESCAPE()),UnicodeEscaper.outsideOf(32, 0x7f) );public static final CharSequenceTranslator ESCAPE_XML = new AggregateTranslator(new LookupTranslator(EntityArrays.BASIC_ESCAPE()),new LookupTranslator(EntityArrays.APOS_ESCAPE()));public static final CharSequenceTranslator ESCAPE_HTML3 = new AggregateTranslator(new LookupTranslator(EntityArrays.BASIC_ESCAPE()),new LookupTranslator(EntityArrays.ISO8859_1_ESCAPE()));public static final CharSequenceTranslator ESCAPE_HTML4 = new AggregateTranslator(new LookupTranslator(EntityArrays.BASIC_ESCAPE()),new LookupTranslator(EntityArrays.ISO8859_1_ESCAPE()),new LookupTranslator(EntityArrays.HTML40_EXTENDED_ESCAPE()));public static final CharSequenceTranslator ESCAPE_CSV = new CsvEscaper();// TODO: Create a parent class - 'SinglePassTranslator' ?//       It would handle the index checking + length returning, //       and could also have an optimization check method.static class CsvEscaper extends CharSequenceTranslator {private static final char CSV_DELIMITER = ',';private static final char CSV_QUOTE = '"';private static final String CSV_QUOTE_STR = String.valueOf(CSV_QUOTE);private static final char[] CSV_SEARCH_CHARS = new char[] {CSV_DELIMITER, CSV_QUOTE, CharUtils.CR, CharUtils.LF};@Overridepublic int translate(CharSequence input, int index, Writer out) throws IOException {if(index != 0) {throw new IllegalStateException("CsvEscaper should never reach the [1] index");}if (StringUtils.containsNone(input.toString(), CSV_SEARCH_CHARS)) {out.write(input.toString());} else {out.write(CSV_QUOTE);out.write(StringUtils.replace(input.toString(), CSV_QUOTE_STR, CSV_QUOTE_STR + CSV_QUOTE_STR));out.write(CSV_QUOTE);}return input.length();}}/* UNESCAPE TRANSLATORS */// TODO: throw "illegal character: \92" as an Exception if a \ on the end of the Java (as per the compiler)?public static final CharSequenceTranslator UNESCAPE_JAVA = new AggregateTranslator(new OctalUnescaper(),     // .between('\1', '\377'),new UnicodeUnescaper(),new LookupTranslator(EntityArrays.JAVA_CTRL_CHARS_UNESCAPE()),new LookupTranslator(new String[][] { {"\\\\", "\\"},{"\\\"", "\""},{"\\'", "'"},{"\\", ""}}));public static final CharSequenceTranslator UNESCAPE_ECMASCRIPT = UNESCAPE_JAVA;public static final CharSequenceTranslator UNESCAPE_HTML3 = new AggregateTranslator(new LookupTranslator(EntityArrays.BASIC_UNESCAPE()),new LookupTranslator(EntityArrays.ISO8859_1_UNESCAPE()),new NumericEntityUnescaper());public static final CharSequenceTranslator UNESCAPE_HTML4 = new AggregateTranslator(new LookupTranslator(EntityArrays.BASIC_UNESCAPE()),new LookupTranslator(EntityArrays.ISO8859_1_UNESCAPE()),new LookupTranslator(EntityArrays.HTML40_EXTENDED_UNESCAPE()),new NumericEntityUnescaper());public static final CharSequenceTranslator UNESCAPE_XML = new AggregateTranslator(new LookupTranslator(EntityArrays.BASIC_UNESCAPE()),new LookupTranslator(EntityArrays.APOS_UNESCAPE()),new NumericEntityUnescaper());public static final CharSequenceTranslator UNESCAPE_CSV = new CsvUnescaper();static class CsvUnescaper extends CharSequenceTranslator {private static final char CSV_DELIMITER = ',';private static final char CSV_QUOTE = '"';private static final String CSV_QUOTE_STR = String.valueOf(CSV_QUOTE);private static final char[] CSV_SEARCH_CHARS = new char[] {CSV_DELIMITER, CSV_QUOTE, CharUtils.CR, CharUtils.LF};@Overridepublic int translate(CharSequence input, int index, Writer out) throws IOException {if(index != 0) {throw new IllegalStateException("CsvUnescaper should never reach the [1] index");}if ( input.charAt(0) != CSV_QUOTE || input.charAt(input.length() - 1) != CSV_QUOTE ) {out.write(input.toString());return input.length();}// strip quotesString quoteless = input.subSequence(1, input.length() - 1).toString();if ( StringUtils.containsAny(quoteless, CSV_SEARCH_CHARS) ) {// deal with escaped quotes; ie) ""out.write(StringUtils.replace(quoteless, CSV_QUOTE_STR + CSV_QUOTE_STR, CSV_QUOTE_STR));} else {out.write(input.toString());}return input.length();}}public StringEscapeUtils() {super();}public static final String escapeJava(String input) {return ESCAPE_JAVA.translate(input);}public static final String escapeEcmaScript(String input) {return ESCAPE_ECMASCRIPT.translate(input);}public static final String unescapeJava(String input) {return UNESCAPE_JAVA.translate(input);}public static final String unescapeEcmaScript(String input) {return UNESCAPE_ECMASCRIPT.translate(input);}public static final String escapeHtml4(String input) {return ESCAPE_HTML4.translate(input);}public static final String escapeHtml3(String input) {return ESCAPE_HTML3.translate(input);}public static final String unescapeHtml4(String input) {return UNESCAPE_HTML4.translate(input);}public static final String unescapeHtml3(String input) {return UNESCAPE_HTML3.translate(input);}public static final String escapeXml(String input) {return ESCAPE_XML.translate(input);}public static final String unescapeXml(String input) {return UNESCAPE_XML.translate(input);}//-----------------------------------------------------------------------public static final String escapeCsv(String input) {return ESCAPE_CSV.translate(input);}public static final String unescapeCsv(String input) {return UNESCAPE_CSV.translate(input);}}

针对转译,尽量不要进行转译后入库,只做查询出特殊字符的转译,或者自己写具体字符的转译,防止转译编码等导致字符混乱


这篇关于java对html转移的语言反编译-org.apache.commons.lang3包有个StringEscapeUtils的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/387642

相关文章

Java中实现线程的创建和启动的方法

《Java中实现线程的创建和启动的方法》在Java中,实现线程的创建和启动是两个不同但紧密相关的概念,理解为什么要启动线程(调用start()方法)而非直接调用run()方法,是掌握多线程编程的关键,... 目录1. 线程的生命周期2. start() vs run() 的本质区别3. 为什么必须通过 st

关于跨域无效的问题及解决(java后端方案)

《关于跨域无效的问题及解决(java后端方案)》:本文主要介绍关于跨域无效的问题及解决(java后端方案),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录通用后端跨域方法1、@CrossOrigin 注解2、springboot2.0 实现WebMvcConfig

Java SWT库详解与安装指南(最新推荐)

《JavaSWT库详解与安装指南(最新推荐)》:本文主要介绍JavaSWT库详解与安装指南,在本章中,我们介绍了如何下载、安装SWTJAR包,并详述了在Eclipse以及命令行环境中配置Java... 目录1. Java SWT类库概述2. SWT与AWT和Swing的区别2.1 历史背景与设计理念2.1.

使用SpringBoot整合Sharding Sphere实现数据脱敏的示例

《使用SpringBoot整合ShardingSphere实现数据脱敏的示例》ApacheShardingSphere数据脱敏模块,通过SQL拦截与改写实现敏感信息加密存储,解决手动处理繁琐及系统改... 目录痛点一:痛点二:脱敏配置Quick Start——Spring 显示配置:1.引入依赖2.创建脱敏

Go语言中泄漏缓冲区的问题解决

《Go语言中泄漏缓冲区的问题解决》缓冲区是一种常见的数据结构,常被用于在不同的并发单元之间传递数据,然而,若缓冲区使用不当,就可能引发泄漏缓冲区问题,本文就来介绍一下问题的解决,感兴趣的可以了解一下... 目录引言泄漏缓冲区的基本概念代码示例:泄漏缓冲区的产生项目场景:Web 服务器中的请求缓冲场景描述代码

SpringBoot 中 CommandLineRunner的作用示例详解

《SpringBoot中CommandLineRunner的作用示例详解》SpringBoot提供的一种简单的实现方案就是添加一个model并实现CommandLineRunner接口,实现功能的... 目录1、CommandLineRunnerSpringBoot中CommandLineRunner的作用

Go语言如何判断两张图片的相似度

《Go语言如何判断两张图片的相似度》这篇文章主要为大家详细介绍了Go语言如何中实现判断两张图片的相似度的两种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 在介绍技术细节前,我们先来看看图片对比在哪些场景下可以用得到:图片去重:自动删除重复图片,为存储空间"瘦身"。想象你是一个

Java死锁问题解决方案及示例详解

《Java死锁问题解决方案及示例详解》死锁是指两个或多个线程因争夺资源而相互等待,导致所有线程都无法继续执行的一种状态,本文给大家详细介绍了Java死锁问题解决方案详解及实践样例,需要的朋友可以参考下... 目录1、简述死锁的四个必要条件:2、死锁示例代码3、如何检测死锁?3.1 使用 jstack3.2

Go语言中Recover机制的使用

《Go语言中Recover机制的使用》Go语言的recover机制通过defer函数捕获panic,实现异常恢复与程序稳定性,具有一定的参考价值,感兴趣的可以了解一下... 目录引言Recover 的基本概念基本代码示例简单的 Recover 示例嵌套函数中的 Recover项目场景中的应用Web 服务器中

html 滚动条滚动过快会留下边框线的解决方案

《html滚动条滚动过快会留下边框线的解决方案》:本文主要介绍了html滚动条滚动过快会留下边框线的解决方案,解决方法很简单,详细内容请阅读本文,希望能对你有所帮助... 滚动条滚动过快时,会留下边框线但其实大部分时候是这样的,没有多出边框线的滚动条滚动过快时留下边框线的问题通常与滚动条样式和滚动行