Author: mgrigorov Date: Fri Jan 14 09:24:22 2011 New Revision: 1058909 URL: http://svn.apache.org/viewvc?rev=1058909&view=rev Log: WICKET-3330 TextField shows HTML entities instead of UTF-8 characters WICKET-2264 Ajax xml response is not validated correct
UNICODE escape the response characteris only if they are non-printable (ASCII < 32, except whitespaces (TAB, LF, CR)) or UNICODE encoding is requested explicitly and above 160 (no idea why 160 is used, and not 128) Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Component.java wicket/trunk/wicket-core/src/test/java/org/apache/wicket/redirect/encodingtest/RequestEncodingTest.java wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/encodings/Home.java wicket/trunk/wicket-examples/src/test/java/org/apache/wicket/examples/encodings/EncodingTest.java wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/string/Strings.java Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Component.java URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Component.java?rev=1058909&r1=1058908&r2=1058909&view=diff ============================================================================== --- wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Component.java (original) +++ wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Component.java Fri Jan 14 09:24:22 2011 @@ -1727,7 +1727,7 @@ public abstract class Component if (getFlag(FLAG_ESCAPE_MODEL_STRINGS)) { // Escape HTML sensitive characters only. Not all none-ascii chars - return Strings.escapeMarkup(modelString, false, true).toString(); + return Strings.escapeMarkup(modelString, false, false).toString(); } return modelString; } Modified: wicket/trunk/wicket-core/src/test/java/org/apache/wicket/redirect/encodingtest/RequestEncodingTest.java URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/redirect/encodingtest/RequestEncodingTest.java?rev=1058909&r1=1058908&r2=1058909&view=diff ============================================================================== --- wicket/trunk/wicket-core/src/test/java/org/apache/wicket/redirect/encodingtest/RequestEncodingTest.java (original) +++ wicket/trunk/wicket-core/src/test/java/org/apache/wicket/redirect/encodingtest/RequestEncodingTest.java Fri Jan 14 09:24:22 2011 @@ -71,7 +71,7 @@ public class RequestEncodingTest extends assertEquals("umlaut-\u00E4-\u00F6-\u00FC", file); String document = tester.getLastResponseAsString(); - assertTrue(document.contains("umlaut-ä-ö-ü")); + assertTrue(document.contains("umlaut-ä-ö-ü")); } Modified: wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/encodings/Home.java URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/encodings/Home.java?rev=1058909&r1=1058908&r2=1058909&view=diff ============================================================================== --- wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/encodings/Home.java (original) +++ wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/encodings/Home.java Fri Jan 14 09:24:22 2011 @@ -38,6 +38,7 @@ public class Home extends WicketExampleP */ public Home(final PageParameters parameters) { + // the non-printable characters are: ��� add(new Label("message", "Hello world! Test: ���")); } Modified: wicket/trunk/wicket-examples/src/test/java/org/apache/wicket/examples/encodings/EncodingTest.java URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/test/java/org/apache/wicket/examples/encodings/EncodingTest.java?rev=1058909&r1=1058908&r2=1058909&view=diff ============================================================================== --- wicket/trunk/wicket-examples/src/test/java/org/apache/wicket/examples/encodings/EncodingTest.java (original) +++ wicket/trunk/wicket-examples/src/test/java/org/apache/wicket/examples/encodings/EncodingTest.java Fri Jan 14 09:24:22 2011 @@ -35,6 +35,7 @@ public class EncodingTest extends TestCa WicketTester tester = new WicketTester(); tester.startPage(Home.class); tester.assertContains("Wicket Examples - encodings"); - tester.assertContains("Hello world! Test: ���"); + // the non-printable characters are: ��� + tester.assertContains("Hello world! Test: ���"); } } Modified: wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/string/Strings.java URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/string/Strings.java?rev=1058909&r1=1058908&r2=1058909&view=diff ============================================================================== --- wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/string/Strings.java (original) +++ wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/string/Strings.java Fri Jan 14 09:24:22 2011 @@ -351,27 +351,23 @@ public final class Strings default : - if (convertToHtmlUnicodeEscapes) + int ci = 0xffff & c; + + if ( + // if this is non-printable and not whitespace (TAB, LF, CR) + (ci < 32 && ci != 9 && ci != 10 && ci != 13) || + // or non-ASCII (XXX: why 160+ ?!) and need to UNICODE escape it + (convertToHtmlUnicodeEscapes && ci > 159)) { - int ci = 0xffff & c; - if (ci > 31 && ci < 160) - { - // nothing special only 7 Bit - buffer.append(c); - } - else - { - // Not 7 Bit use the unicode system - buffer.append("&#"); - buffer.append(Integer.toString(ci)); - buffer.append(';'); - } + buffer.append("&#"); + buffer.append(Integer.toString(ci)); + buffer.append(';'); } else { + // ASCII or whitespace buffer.append(c); } - break; } }