Webservice—SOAP报文字符转义

WebService特殊字符转义

  soap报文请求Webservice时,经常会遇到特殊字符导致接口报错;这时候需要转义处理;

   常见的转义字符如下:

& &
' ' 单引号
" " 双引号
>  > 大于号
&lt; < 小于号

  转义之后的数据如果是在js等前端处理,会正常显示转义前的符号,无需再做处理;

https://www.w3cschool.cn/oraclejc/oraclejc-ruyk2r6p.html

Oracle处理方式:

CREATE OR REPLACE Function ZLXA_TransferResponse
(
resText In Varchar2
)
  Return Varchar2 As
  --作者: 王大聖
  --时间:2021-01-22
  --功能:调用WebService后存在大量的&amp;  & 和&apos; ' 单引号&quot; " 双引号&gt;  >  大于号&lt; < 小于号
  --实现:  转义

  l_returnXML Varchar2(32767) := '';

  v_AT   Varchar2(2);
Begin

  If resText Is Null Or Length(resText) <=0 Then
    Return '';
  End If;

  v_AT := chr(38);

  l_returnXML := Replace(resText, v_AT || 'amp;', v_AT); --&amp; 为 &
  l_returnXML := Replace(l_returnXML, v_AT || 'apos;', Chr(39)); --&apos; 为 '
  l_returnXML := Replace(l_returnXML, v_AT || 'quot;', Chr(34)); --&quot; 为 "
  l_returnXML := Replace(l_returnXML, v_AT || 'gt;', Chr(62)); --&gt; 为 >
  l_returnXML := Replace(l_returnXML, v_AT || 'lt;', Chr(60)); --&lt; 为 <

  Return l_returnXML;
Exception
  When Others Then
    Return resText;
End;

/*Create Public Synonym ZLXA_TRANSFERRESPONSE For ZLHIS.ZLXA_TRANSFERRESPONSE;
 Grant Execute On ZLXA_TRANSFERRESPONSE To Public; */

相关Oracle函数介绍: Chr函数

Oracle Chr()函数可以根据数字代码返回字符,其功能和ASCII函数相反。

适用于

CHR()函数可用于以下版本的Oracle:

Oracle 12c、Oracle 11g、Oracle 10g、Oracle 9i

CHR()有个对应的函数ASCII(),可以实现相反的作用。
ASCII() --将字符转换为ASCII码
语法
ASCII(single_character)
示例
select ASCII('A') from dual;  --返回 65

ASCII表

Dec Hex Oct Char Description
0 0 000   null
1 1 001   start of heading
2 2 002   start of text
3 3 003   end of text
4 4 004   end of transmission
5 5 005   enquiry
6 6 006   acknowledge
7 7 007   bell
8 8 010   backspace
9 9 011   horizontal tab
10 A 012   new line
11 B 013   vertical tab
12 C 014   new page
13 D 015   carriage return
14 E 016   shift out
15 F 017   shift in
16 10 020   data link escape
17 11 021   device control 1
18 12 022   device control 2
19 13 023   device control 3
20 14 024   device control 4
21 15 025   negative acknowledge
22 16 026   synchronous idle
23 17 027   end of trans. block
24 18 030   cancel
25 19 031   end of medium
26 1A 032   substitute
27 1B 033   escape
28 1C 034   file separator
29 1D 035   group separator
30 1E 036   record separator
31 1F 037   unit separator
32 20 040   space
33 21 041 !  
34 22 042 "  
35 23 043 #  
36 24 044 $  
37 25 045 %  
38 26 046 &  
39 27 047 '  
40 28 050 (  
41 29 051 )  
42 2A 052 *  
43 2B 053 +  
44 2C 054 ,  
45 2D 055 -  
46 2E 056 .  
47 2F 057 /  
48 30 060 0  
49 31 061 1  
50 32 062 2  
51 33 063 3  
52 34 064 4  
53 35 065 5  
54 36 066 6  
55 37 067 7  
56 38 070 8  
57 39 071 9  
58 3A 072 :  
59 3B 073 ;  
60 3C 074 <  
61 3D 075 =  
62 3E 076 >  
63 3F 077 ?  
64 40 100 @  
65 41 101 A  
66 42 102 B  
67 43 103 C  
68 44 104 D  
69 45 105 E  
70 46 106 F  
71 47 107 G  
72 48 110 H  
73 49 111 I  
74 4A 112 J  
75 4B 113 K  
76 4C 114 L  
77 4D 115 M  
78 4E 116 N  
79 4F 117 O  
80 50 120 P  
81 51 121 Q  
82 52 122 R  
83 53 123 S  
84 54 124 T  
85 55 125 U  
86 56 126 V  
87 57 127 W  
88 58 130 X  
89 59 131 Y  
90 5A 132 Z  
91 5B 133 [  
92 5C 134 \  
93 5D 135 ]  
94 5E 136 ^  
95 5F 137 _  
96 60 140 `  
97 61 141 a  
98 62 142 b  
99 63 143 c  
100 64 144 d  
101 65 145 e  
102 66 146 f  
103 67 147 g  
104 68 150 h  
105 69 151 i  
106 6A 152 j  
107 6B 153 k  
108 6C 154 l  
109 6D 155 m  
110 6E 156 n  
111 6F 157 o  
112 70 160 p  
113 71 161 q  
114 72 162 r  
115 73 163 s  
116 74 164 t  
117 75 165 u  
118 76 166 v  
119 77 167 w  
120 78 170 x  
121 79 171 y  
122 7A 172 z  
123 7B 173 {  
124 7C 174 |  
125 7D 175 }  
126 7E 176 ~  
127 7F 177 DEL  

 

猜你喜欢

转载自blog.csdn.net/wangshengfeng1986211/article/details/112992222