Author: vsiveton Date: Wed May 20 11:34:02 2009 New Revision: 776667 URL: http://svn.apache.org/viewvc?rev=776667&view=rev Log: o take care of surrogate
Modified: maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/util/HtmlTools.java maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/util/HtmlToolsTest.java Modified: maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/util/HtmlTools.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/util/HtmlTools.java?rev=776667&r1=776666&r2=776667&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/util/HtmlTools.java (original) +++ maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/util/HtmlTools.java Wed May 20 11:34:02 2009 @@ -310,7 +310,7 @@ StringBuffer encoded = new StringBuffer(); int length = url.length(); - char[] unicode = new char[1]; + int[] unicode = new int[1]; for ( int i = 0; i < length; ++i ) { @@ -353,7 +353,14 @@ try { - unicode[0] = c; + if ( isHighSurrogate( c ) ) + { + unicode[0] = toCodePoint( c, url.charAt( ++i ) ); + } + else + { + unicode[0] = c; + } bytes = ( new String( unicode, 0, 1 ) ).getBytes( "UTF8" ); } catch ( UnsupportedEncodingException cannotHappen ) Modified: maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/util/HtmlToolsTest.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/util/HtmlToolsTest.java?rev=776667&r1=776666&r2=776667&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/util/HtmlToolsTest.java (original) +++ maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/util/HtmlToolsTest.java Wed May 20 11:34:02 2009 @@ -19,6 +19,9 @@ * under the License. */ +import java.net.URLEncoder; +import java.util.Locale; + import org.codehaus.plexus.PlexusTestCase; /** @@ -105,16 +108,18 @@ * Verify the expected results. */ public void testEncodeURL() + throws Exception { assertNull( HtmlTools.encodeURL( null ) ); assertEquals( HtmlTools.encodeURL( "" ), "" ); - assertEquals( HtmlTools.encodeURL( - "http://www.example.com/?This is a simple test." ), - "http://www.example.com/?This%20is%20a%20simple%20test." ); - - assertEquals( HtmlTools.encodeURL( - "http://www.example.com/?This is a simple & short test." ), - "http://www.example.com/?This%20is%20a%20simple%20&%20short%20test." ); + assertEquals( HtmlTools.encodeURL( "http://www.example.com/?This is a simple test." ), + "http://www.example.com/?This%20is%20a%20simple%20test." ); + + assertEquals( HtmlTools.encodeURL( "http://www.example.com/?This is a simple & short test." ), + "http://www.example.com/?This%20is%20a%20simple%20&%20short%20test." ); + + String url = "\uD808\uDF45"; + assertEquals( HtmlTools.encodeURL( url ), URLEncoder.encode( url, "UTF-8" ).toLowerCase( Locale.ENGLISH ) ); } /**