View Javadoc

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.myfaces.shared_orchestra.renderkit.html.util;
20  
21  
22  
23  
24  /**
25   * Converts characters outside of latin-1 set in a string to numeric character references.
26   * 
27   */
28  public abstract class UnicodeEncoder
29  {
30      /**
31       * Encodes the given string, so that it can be used within a html page.
32       * @param string the string to convert
33       */
34      public static String encode (String string)
35      {
36          if (string == null)
37          {
38              return "";
39          }
40  
41          StringBuffer 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                      sb = new StringBuffer( string.length()+4 );
50                      sb.append( string.substring(0,i) );
51                  }
52                  //encode all non basic latin characters
53                  sb.append("&#" + ((int)c) + ";");
54              }
55              else if( sb != null )
56              {
57                  sb.append(c);
58              }
59          }
60  
61          return sb != null ? sb.toString() : string;
62      }
63  
64  
65  }