tobrien 2003/07/31 13:09:21
Modified: codec/src/java/org/apache/commons/codec/net URLCodec.java
codec/src/test/org/apache/commons/codec/net
URLCodecTest.java
Log:
Bugzilla #21633: Commit'd patch from Michael Becke to URL
Revision Changes Path
1.3 +5 -5
jakarta-commons/codec/src/java/org/apache/commons/codec/net/URLCodec.java
Index: URLCodec.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/codec/src/java/org/apache/commons/codec/net/URLCodec.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- URLCodec.java 25 Jul 2003 22:42:46 -0000 1.2
+++ URLCodec.java 31 Jul 2003 20:09:21 -0000 1.3
@@ -152,7 +152,7 @@
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
for (int i = 0; i < pArray.length; i++) {
int b = pArray[i];
- if (urlsafe.get(b)) {
+ if (b >= 0 && urlsafe.get(b)) {
if (b == ' ') {
b = '+';
}
1.2 +38 -3
jakarta-commons/codec/src/test/org/apache/commons/codec/net/URLCodecTest.java
Index: URLCodecTest.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/codec/src/test/org/apache/commons/codec/net/URLCodecTest.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- URLCodecTest.java 11 Jul 2003 20:14:37 -0000 1.1
+++ URLCodecTest.java 31 Jul 2003 20:09:21 -0000 1.2
@@ -71,11 +71,46 @@
*/
public class URLCodecTest extends TestCase {
+
+ static final int SWISS_GERMAN_STUFF_UNICODE [] = {
+ 0x47, 0x72, 0xFC, 0x65, 0x7A, 0x69, 0x5F, 0x7A, 0xE4, 0x6D, 0xE4
+ };
+
+ static final int RUSSIAN_STUFF_UNICODE [] = {
+ 0x412, 0x441, 0x435, 0x43C, 0x5F, 0x43F, 0x440, 0x438,
+ 0x432, 0x435, 0x442
+ };
public URLCodecTest(String name) {
super(name);
}
+ private String constructString(int [] unicodeChars) {
+ StringBuffer buffer = new StringBuffer();
+ if (unicodeChars != null) {
+ for (int i = 0; i < unicodeChars.length; i++) {
+ buffer.append((char)unicodeChars[i]);
+ }
+ }
+ return buffer.toString();
+ }
+
+ public void testUTF8RoundTrip() throws Exception {
+
+ String ru_msg = constructString(RUSSIAN_STUFF_UNICODE);
+ String ch_msg = constructString(SWISS_GERMAN_STUFF_UNICODE);
+
+ URLCodec codec = new URLCodec();
+
+ assertEquals(
+ "%D0%92%D1%81%D0%B5%D0%BC_%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82",
+ codec.encode(ru_msg, "UTF-8")
+ );
+ assertEquals("Gr%C3%BCezi_z%C3%A4m%C3%A4", codec.encode(ch_msg, "UTF-8"));
+
+ assertEquals(ru_msg, codec.decode(codec.encode(ru_msg, "UTF-8"), "UTF-8"));
+ assertEquals(ch_msg, codec.decode(codec.encode(ch_msg, "UTF-8"), "UTF-8"));
+ }
public void testBasicEncodeDecode() throws Exception {
URLCodec urlcodec = new URLCodec();
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]