字符转义技术

Oracle程序包 当项目越来越大的时候,数据库中可能会出现成百上千的函数,存储过程之类的,为了方便管理,Oracle提倡使用程序包的管理机制,实现业务模块隔离,方便管理。 Oracle 程序包的创建 程序包的创建有点像JAVA中接口的定义,只有声明,没有实现。 语法:create or replace package 包名 as 函数定义...存储过程定义 end 包名; 举例: create ... 阅读详情

    在项目测试阶段,测试人员会输入一些特殊字符,比如:<table>、<./或&lt;这样的字符时,页面就会出现错误, 如果是导出,导出的Excel也会出现问题,或者直接输出的页面会把用户输入的&lt;、&gt;、&amp;及&nbsp;都转化成<、>、&及空格,原因是用java代码直接取的并没有对特殊字符做转义。

     因为Html中的<, >,&有特殊含义,(前两个字符用于链接签,&用于转义),不能直接使用。使用这三个字符时,应使用它们的转义序列。

   & 的转义序列为 & amp 或 & #38;
   < 的转义序列为 & lt; & #60;
   > 的转义序列为 & gt; & #62;
  前者为字符转义序列,后者为数字转义序列。
  例如 & lt; font &gt;显示为<font>,若直接写为则被认为是一个链接签。
  需要说明的是:
    a. 转义序列各字符间不能有空格;
    b. 转义序列必须以“;”结束;
    c. 单独的&不被认为是转义开始。
    d. 区分大小写  
另一个需要转义的字符是双引号””,它的转义序列为&quot;或&#34;
这里需要特殊注意的是一定要对&进行转义,有的朋友只对<、>甚至引号转义,但并没有对&进行转义,&是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, "&", "&amp;");
        strData = replaceString(strData, "<", "&lt;");
        strData = replaceString(strData, ">", "&gt;");
        strData = replaceString(strData, "'", "&apos;");
        strData = replaceString(strData, "/"", "&quot;");
        return strData;
    }

    /**
     * 还原字符串中特殊字符
     */
    public static String decodeString(String strData)
    {
        strData = replaceString(strData, "&lt;", "<");
        strData = replaceString(strData, "&gt;", ">");
        strData = replaceString(strData, "&apos;", "'");
        strData = replaceString(strData, "&quot;", "/"");
        strData = replaceString(strData, "&amp;", "&");
        return strData;
    }
    第一个函数replaceString转义单个字符,第二个函数encodeString为转义包括&、<、>、’和/这几个特殊字符,第三个函数decodeString是还原这几个特殊字符。
因此在需要转义的时候调用Tools. encodeString()就可以了。
需要说明的是导出Excel是比较特殊的,因为如果有<table>这样的内容,是Excel保留字的,会造成Excel表格的混乱,如果要是用这个工具类做转义的话,会出现显示出&lt;table&gt;这样的内容,它会认为这是个字符串,并且不太好再把这样的字符串转义过来,经过测试如果有像“&lt;&gt;&amp;&nbsp;”或其它的Html标签,Excel会认为这样的内容为字符串,并不会引起错误,所以我可以放心的认为只有<table>这样的内容才会引起错误。那么怎么才能解决这个问题呢,既然只有<和>才会引起错误,那么何不把半角的尖括号转成全角的尖括号呢,经过测试后,发现真的可以解决,而且是个很高明的方法,因此就这样找到了解决方案。
还有一点是,无论用户输入多少个连续的空格,在页面中显示都为一个空格,这是Html本身就有的,因为Html只认&nbsp;为标准的空格,解决方案是把普通空格转义为&nbsp;,但涉及的范围之广,影响的地方之大,是我们必须要考虑的因素,不光是像Display Tag标签和自定义的标签,而且struts本身的标签也要进行修改,这样一来,工作量大不说,不知道会不会引起这样那样的问题,而且并不影响正常运行,所以经过再三考虑,还是决定不予修改。

转义序列字符(\0,\n,\r,\t,\v,\a,\f,\b,\\,\‘,\“,\?)详解,转义字符对应的全称,输出结果和对应的ASCII码值详解; 转义序列字符(\0,\n,\r,\t,\v,\a,\f,\b,\\,\',\",\?)详解,转义字符对应的全称,输出结果和对应的ASCII码值详解; 阅读详情

相关推荐

Oracle函数与存储过程和程序包

函数一般是工具性的,存储过程一般是DML的复杂操作 函数有返回类型 return create function getBookCount return number as begin declare book_count number; begin select count(*) into book_count from t_book; return book_co...

悦分享 1796

&nbsp|&quot|&amp|&lt|&gt等html字符转义

TGA麻辣香锅的博客 1万+

Oracle--存储过程

本文介绍了Oracle数据库中PL/SQL程序块的存储形式,包括存储过程、函数、触发器和程序包。存储过程是命名的PL/SQL块,可有参数,保存在数据库中,执行效率高。函数用于计算并返回值,调用时需保存返回值。触发器是特殊的存储过程,由数据库事件触发执行,用于管理完整性约束等。程序包由PL/SQL元素和块组成,可整体加载到内存中。这些组件增强了代码的复用性、组织性和性能。

恐龙让Lee的博客 2516

将&符号(&amp; amp;)解码为正常

在开发中碰到一个问题, HTML中将 字符串【SCF520 & SCF520P】转为【SCF520 &amp; SCF520P】,传输到PHP后台方法,在var_dump()打印中,输出的是【SCF520 & SCF520P】,但是存储到数据库中时是【SCF520 &amp; SCF520P】,这里是因为转义了字符(常用转义字符如下图1),在PHP中需要使用 htmlentities() 函数把字符转换为 HTML 实体,才可以看出被转义的完整字符。 解决办法: 使用替

u011042325的博客 4626

别再让充电器‘罢工’了!聊聊Charger里VIN-DPM这个不起眼但关键的功能

本文深入探讨了充电IC中的VIN-DPM(输入电压动态电源管理)功能,揭示其如何智能调节充电策略以避免电源适配器过载。通过实际案例和实验室数据,展示了VIN-DPM在提升充电稳定性和效率中的关键作用,并提供了选型、设计和故障排查的实用指南。

weixin_33738578的博客 416

02-Cesium-实现天地图标记

首先天地图申请token,然后Cesium-实现天地图标记详细说明

m0_62785037的博客 1171

最简单的方法解决js含有&的链接参数转义成&amp问题

提出问题:在把含有&符号的URL存入js变量,在读出来的时候,&符号会被转义成& 导致链接指向错误或者失效问题,看了很多网上的教程都比较麻烦,有的用参数替换,有的用正则匹配替换等,今天提供一个简单的防止js链接参数被转义的方法。原理:js首先执行了字符拼接程序,html还不能进行转码,所以最终呈现的效果就是&保留了原样,对于php也可以考虑一下这个方法。正确方法:使用字符拼接,就不会被转义。

循环编织时间年轮,递归叩问存在本质,谁能在硅基荒原上,种出思想的玫瑰…… 6146

【推荐100个unity插件】Unity URP(通用渲染管线)的基于物理的天地和预计算大气散射——UnityPhysicallyBasedSkyURP

本文介绍了Unity URP(通用渲染管线)中基于物理的天地和预计算大气散射的实现方法。该插件提供物理天空、大气散射、高度雾效、动态天空反射和环境光等功能,要求Unity 2022.3及以上版本,支持着色器模型3.5+。使用步骤包括:添加渲染器功能、配置Volume组件(天空、雾效等),并建议太阳强度设为3、曝光为0作为初始设置。插件已在GitHub和Gitee开源,附带详细配置截图和效果展示。文末推荐了多个Unity开发相关专栏,涵盖游戏开发全领域知识。作者向宇提供了博客链接,欢迎交流学习问题。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1227

常用正则表达式&相应转义符&语法

博主注:虽然是js的正则表达式,但大部分语法对于C#也是通用的 只能输入数字:"^[0-9]*$"。只能输入n位的数字:"^/d{n}$"。只能输入至少n位的数字:"^/d{n,}$"。只能输入m~n位的数字:。"^/d{m,n}$"只能输入零和非零开头的数字:"^(0|[1-9][0-9]*)$"。只能输入有两位小数的正实数:"^[0-9]+(.[0-9]{2})?$"。只能输入有1~3

QK的专栏 8382

【人工智能】架构演进:基于本体论与 LLM Agent 的供应链备件决策闭环实践

本文探讨了如何将本体论(Ontology)与大语言模型(LLM)Agent结合,构建供应链备件管理的智能决策系统。针对LLM在垂直领域存在的幻觉和逻辑缺陷问题,提出通过本体论建立结构化知识框架,形成四层架构:知识建模、动态感知、深度分析和决策闭环。系统利用图数据库实例化领域本体,融合多源数据实现实时感知,结合图谱推理和时序预测进行确定性分析,最终通过工具调用完成决策执行。技术选型推荐Gemini 1.5 Pro、Neo4j和LangChain等工具,实现从自动化到智能化的升级。该架构为工业领域提供了可解释、

奶爸的编程之路,也就一周冷个三天 170

秃鹰搜索优化算法(BES)详解:从自然捕食到全局优化

秃鹰搜索优化算法(Bald Eagle Search Optimization Algorithm,BES)是由马来西亚学者Alsattar等人于2020年提出的一种新型元启发式优化算法。该算法灵感来源于秃鹰在自然界中高超的捕食行为,特别是其独特的狩猎策略和卓越的视觉搜索能力,模拟了秃鹰捕食鲑鱼等猎物的完整过程。

qq_42212808的博客 1353

一文搞懂oracle存储过程、函数、触发器和程序包

文章目录一、存储过程1、简介2、创建存储过程 最近在公司用到orale数据库,以前都是用的mysql。相较于oracle,mysql的存储过程就显得比较鸡肋了,所以系统的学习了一下,写下本文记录一下,以后也可以翻看学习,本文所用到的例子均来自oracle11g自带的scott模式,话不多说,直接开始! 一、存储过程 1、简介 存储过程是一种命名的PL/SQL块 可以没有参数,也可以有若干个输入、输出函数,通常没有返回值 保存在数据库中,不可以被SQL语句直接调用 调用存储过程 execut(exec)

JF的博客 3488

想使用dify实现docx文档的自动生成?试了一圈,感觉还是根据python-docx更靠谱

在软件开发过程中,需求文档、设计文档等材料的编写是每个开发者都绕不开的工作。最近笔者接到一个需要批量生成标准化需求文档的任务,尝试了目前热门的低代码工具Dify后,发现对于稍微复杂格式的文档生成需求(例如文本居中这么简单的需求),最终还是回归到基于python-docx库的解决方案。本文将分享两种技术路线的对比实践。

xiezhipu的博客 2547

oracle 存储过程和函数、程序包

1:存储过程 什么是存储过程 命名的PL/SQL块,使用过程式的语言编写。 编译并存储在数据库中 存储过程的作用 A:效率是最高的。经过编译并存储在数据库,适合数据量比较大的业务处理。 B:缺点:程序在不同数据库之间的移植性比较差。 ============存储过程的语法结构================== create or replace produc...

一瓢江湖 359

AI在电商中的搜索优化

自拟标题 《AI技术助力电商搜索优化:深度解析一线大厂面试题及算法编程实践》 概述 随着人工智能技术的不断发展,AI在电商搜索优化中的应用日益广泛。本文将围绕“AI在电商中的搜索优化”这一主题,介绍国内头部一线大厂如阿里巴巴、百度、腾讯、字节跳动等在面试中常见的AI相关面试题和算法编程题,并提供详尽的答案解

AI天才研究院 912

毕设帮扶:从0到1搭建基于YOLOv5的打架斗殴检测系统——助你搞定深度学习毕设

做完这个毕设,你已经掌握了从数据准备到模型部署、界面开发的全流程。把模型部署到边缘设备(如安防摄像头的嵌入式系统)上,实现本地化实时检测与报警;加入行为严重程度分析(如轻微推搡 vs 严重斗殴)、涉事人员数量统计,让系统从“检测”升级为“智能安防决策”;尝试融合声音、红外等多模态数据,打造全方位的暴力事件监测系统。按照这个教程一步步做,你的毕设肯定能做得很扎实。要是过程中遇到啥问题,别担心,慢慢梳理或者咱们一起聊聊,一定能把这个毕设做成你满意的作品。

LXY_LOVE36的博客 121

ORACLE 11G学习笔记6—程序包、触发器、存储过程和函数

一、[程序包]pack_body_emp 、exec_package代码手敲并理解… 1、先创建程序包说明: 2、再创建程序包主体: 3、执行程序包 二、[触发器]sentence_level代码手敲并理解… 1、创建一个日志表: 2、创建一个语句级触发器 3、查看触发器的运行情况(以插入举例): 三、[触发器]tri_insert_good 行级触发器代码手敲并验证…自动创建主键值...

sunxiaojing0628的博客 383

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

ORACLE程序包

程序包 包主体/规范名字一样包主体/规范中的对应参数必须类型及名字一样只能使用强类型的REF游标 创建程序包规范create or replace package my_packis       procedure find_emp_proc(eno emp.empno%type);       function find_emp_fun(e

huangpei2008的专栏 4173

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Oracle回顾--存储过程、函数、程序包

看完了两天了,却因为各种事情到现在才有时间来写博客,方便日后查看了…… PL/SQL的子程序有两种形式,即过程和函数,过程与函数的区别在于函数有返回值,可以向调用者返回执行结果,而过程没有返回值。 一、存储过程 存储过程是一段存储在数据库中执行某功能的程序。是将一些固定的操作集中起来由Oracle数据库服务器来完成,以实现某个任务,是Oracle开发者在数据转换或查询报表时经常使

cxx_317的博客 668

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Oracle学习笔记十二 子程序(存储过程、自定函数)和程序包

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33813128的博客 167

Oracle procedure 基本语法 (存储过程)

Oracle procedure 基本语法 转自:http://lorry1113.javaeye.com/blog/513851 关键字: oracle 存储过程 1.基本结构 CREATE OR REPLACE PROCEDURE 存储过程名字 ( 参数1 IN NUMBER, 参数2 IN NUMBER ) IS 变量1 INTEGER :=0; 变量2 DATE; ...

Tangerine_bisto的博客 1万+

第七章-存储过程、触发器和程序包

存储过程、触发器和程序包

qq_51922077的博客 404

oracle程序包的创建和调用

--oracle程序包分包头和包体 --创建包头create or replace PACKAGE pak1 is --存储过程addnumber procedure addnumber(x in number,y in NUMBER);--函数addfunction function addfunction(x in number,y in NUMBER) RETURN numbe

aline200的博客 6909

Oracle数据库创建存储过程、函数、包(六)

一、存储过程 存储过程简介 a、 在Oracle中的存储过程又名子程序; b、 命名的PL/SQL块,编译并存储在数据库中; c、 存储过程的各个部分: 声明部分; 可执行部分; 异常处理部分(可选)。 d、存储过程的分类: 过程-执行某些操作; 函数-执行操作并返回值; 存储过程的优点 a、模块化: 将程序分解为逻辑模块; b、可重用性: 可以被任意数目的程序调用; c、可维护性: ...

q_2540638774的博客 1578
上一篇: log4j的配置与说明
下一篇: 同一个applet类在不同浏览器的同步
潭溪Debby
博客等级 码龄21年 32粉丝 22原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值