1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.myfaces.shared.renderkit.html.util;
20
21 import java.io.IOException;
22 import java.io.Writer;
23
24
25
26
27
28 public abstract class UnicodeEncoder
29 {
30
31
32
33
34 public static String encode (String string)
35 {
36 if (string == null)
37 {
38 return "";
39 }
40
41 StringBuilder sb = null;
42 char c;
43 for (int i = 0; i < string.length (); ++i)
44 {
45 c = string.charAt(i);
46 if (((int)c) >= 0x80)
47 {
48 if( sb == null )
49 {
50 sb = new StringBuilder( string.length()+4 );
51 sb.append( string.substring(0,i) );
52 }
53
54 sb.append("&#");
55 sb.append((int)c);
56 sb.append(";");
57 }
58 else if( sb != null )
59 {
60 sb.append(c);
61 }
62 }
63
64 return sb != null ? sb.toString() : string;
65 }
66
67 public static void encode (Writer writer, String string) throws IOException
68 {
69 if (string == null)
70 {
71 return;
72 }
73
74 int start = 0;
75 char c;
76 for (int i = 0; i < string.length (); ++i)
77 {
78 c = string.charAt(i);
79 if (((int)c) >= 0x80)
80 {
81 if (start < i)
82 {
83 writer.write(string, start, i-start);
84 }
85 start = i+1;
86
87 writer.write("&#");
88 writer.write(Integer.toString((int)c));
89 writer.write(";");
90 }
91 }
92
93 if (start == 0)
94 {
95 writer.write(string);
96 }
97 else if (start < string.length())
98 {
99 writer.write(string,start,string.length()-start);
100 }
101 }
102
103 public static void encode (Writer writer, char[] cbuf, int off, int len) throws IOException
104 {
105 if (cbuf == null)
106 {
107 return;
108 }
109
110 int start = off;
111 char c;
112 for (int i = off; i < off+len; ++i)
113 {
114 c = cbuf[i];
115 if (((int)c) >= 0x80)
116 {
117 if (start < i)
118 {
119 writer.write(cbuf, start, i-start);
120 }
121 start = i+1;
122
123 writer.write("&#");
124 writer.write(Integer.toString((int)c));
125 writer.write(";");
126 }
127 }
128
129 if (start == off)
130 {
131 writer.write(cbuf, off, len);
132 }
133 else if (start < off+len)
134 {
135 writer.write(cbuf,start,off+len-start);
136 }
137 }
138
139 public static void encode (Writer writer, String cbuf, int off, int len) throws IOException
140 {
141 if (cbuf == null)
142 {
143 return;
144 }
145
146 int start = off;
147 char c;
148 for (int i = off; i < off+len; ++i)
149 {
150 c = cbuf.charAt(i);
151 if (((int)c) >= 0x80)
152 {
153 if (start < i)
154 {
155 writer.write(cbuf, start, i-start);
156 }
157 start = i+1;
158
159 writer.write("&#");
160 writer.write(Integer.toString((int)c));
161 writer.write(";");
162 }
163 }
164
165 if (start == off)
166 {
167 writer.write(cbuf, off, len);
168 }
169 else if (start < off+len)
170 {
171 writer.write(cbuf,start,off+len-start);
172 }
173 }
174 }