Return-Path: Mailing-List: contact tomcat-dev-help@jakarta.apache.org; run by ezmlm Delivered-To: mailing list tomcat-dev@jakarta.apache.org Delivered-To: moderator for tomcat-dev@jakarta.apache.org Received: (qmail 47607 invoked from network); 24 Feb 2001 07:55:35 -0000 Received: from www-cache.ufanet.ru (HELO proxy.ufanet.ru) (193.233.144.105) by h31.sny.collab.net with SMTP; 24 Feb 2001 07:55:35 -0000 Received: from mail.ufanet.ru (mail.ufanet.ru [213.24.120.70]) by proxy.ufanet.ru (8.8.5-MVC-230198/8.8.5) with ESMTP id MAA24444 for ; Sat, 24 Feb 2001 12:55:34 +0500 (YEKT) Received: (from root@localhost) by mail.ufanet.ru (8.9.3/8.8.5) id MAA25103 for tomcat-dev@jakarta.apache.org.AVP; Sat, 24 Feb 2001 12:55:11 +0500 (YEKT) Received: from wwwadmin (bis-10.ufanet.ru [192.168.168.10] (may be forged)) by mail.ufanet.ru (8.9.3/8.8.5) with SMTP id MAA24982 for ; Sat, 24 Feb 2001 12:54:25 +0500 (YEKT) Message-ID: <002801c09e37$98c80890$0aa8a8c0@ufanet.ru> From: "������� ������" To: Subject: Please add full support UTF-8 Date: Sat, 24 Feb 2001 12:57:06 +0500 MIME-Version: 1.0 Content-Type: text/plain; charset="koi8-r" Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 5.50.4522.1200 X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4522.1200 X-Spam-Rating: h31.sny.collab.net 1.6.2 0/1000/N method POST # ***************************************************************** # replace in javax/servlet/http/HttpUtils.java # ***************************************************************** private static String parseName( String data, StringBuffer buf ) { buf.setLength(0); for( int i = 0; i < data.length(); i++ ) { char c = data.charAt(i); switch(c) { case 0: break; case 43: // '+' buf.append(' '); break; case 37: // '%' try { if ( data.length() - i < 3 ) break; int b1 = Integer.parseInt( "" + data.charAt(++i) + data.charAt(++i), 16); if ( ( b1 & 128 ) == 0 ) { buf.append( (char)b1 ); break; } if ( data.length() - i < 4 || data.charAt(++i) != '%' ) break; int b2 = Integer.parseInt( "" + data.charAt(++i) + data.charAt(++i), 16); if ( ( ( b1 & 192 ) == 192 ) && ( ( b2 & 128 ) == 128 ) ) { buf.append( (char)( ( ( b1 & 31 ) << 6 ) | ( b2 & 63 ) ) ); break; } if ( data.length() - i < 4 || data.charAt(++i) != '%' ) break; int b3 = Integer.parseInt( "" + data.charAt(++i) + data.charAt(++i), 16); if ( ( ( b1 & 192 ) == 192 ) && ( ( b2 & 128 ) == 128 ) && ( ( b3 & 128 ) == 128 ) ) buf.append((char)( ( ( b1 & 15 ) << 12 ) | ( ( b2 & 63 ) << 6 ) | ( b3 & 63 ) ) ); break; } catch(NumberFormatException _ex) { String msg = "Decode error "; throw new IllegalArgumentException(msg); } catch(StringIndexOutOfBoundsException _ex) {} break; default: buf.append(c); break; } } return buf.toString(); } method GET # ***************************************************************** # replace in org/apache/tomcat/util/RequestUtil.java # ***************************************************************** public static String unUrlDecode(String data) { StringBuffer buf = new StringBuffer(); for(int i = 0; i < data.length(); i++) { char c = data.charAt(i); switch(c) { case 43: // '+' buf.append(' '); break; case 37: // '%' try { if ( data.length() - i < 3 ) break; int b1 = Integer.parseInt( "" + data.charAt(++i) + data.charAt(++i), 16); if ( ( b1 & 128 ) == 0 ) { buf.append( (char)b1 ); break; } if ( data.length() - i < 4 || data.charAt(++i) != '%' ) break; int b2 = Integer.parseInt( "" + data.charAt(++i) + data.charAt(++i), 16); if ( ( ( b1 & 192 ) == 192 ) && ( ( b2 & 128 ) == 128 ) ) { buf.append( (char)( ( ( b1 & 31 ) << 6 ) | ( b2 & 63 ) ) ); break; } if ( data.length() - i < 4 || data.charAt(++i) != '%' ) break; int b3 = Integer.parseInt( "" + data.charAt(++i) + data.charAt(++i), 16); if ( ( ( b1 & 192 ) == 192 ) && ( ( b2 & 128 ) == 128 ) && ( ( b3 & 128 ) == 128 ) ) buf.append((char)( ( ( b1 & 15 ) << 12 ) | ( ( b2 & 63 ) << 6 ) | ( b3 & 63 ) ) ); break; } catch(NumberFormatException _ex) { String msg = "Decode error "; throw new IllegalArgumentException(msg); } catch(StringIndexOutOfBoundsException _ex) {} break; default: buf.append(c); break; } } return buf.toString(); }