- From: Gary Adams - Sun Microsystems Labs BOS <Gary.Adams@east.sun.com>
- Date: Wed, 16 Apr 1997 16:53:42 -0400
- To: bert@w3.org, uri@services.bunyip.com
On a similar note, here's how a Unicode client might take an input URL and transcode the bits before sending to a server which only accepts a platform specific encoding. This was hacked together today on JDK 1.1.1 and may still be buggy (i.e., only tested on Solaris 2.5 with LANG=en_US). - save in file UTF8URL.java - compile as "javac UTF8URL.java" - run as "java UTF8URL" ----------------------------------------------------------------------- import java.awt.* ; import java.awt.event.* ; import java.net.URLEncoder; import sun.io.CharToByteConverter; public class UTF8URL extends Frame implements TextListener, ItemListener{ public String encoding; public String encoded_text; private CharToByteConverter btc = null; private String [] charset_list = { "8859_1", "8859_2", "8859_3", "8859_5", "8859_6", "8859_7", "8859_9", "Cp1250", "Cp1251", "Cp1252", "Cp1253", "Cp1254", "Cp1255", "Cp1256", "Cp1257", "Cp1258", "Cp437", "Cp737", "Cp775", "Cp850", "Cp852", "Cp855", "Cp857", "Cp860", "Cp861", "Cp862", "Cp863", "Cp864", "Cp865", "Cp866", "Cp869", "Cp874", "EUCJIS", "JIS", "MacArabic", "MacCentralEurope", "Macintosh", "MacCroatian", "MacCyrillic", "MacDingbat", "MacGreek", "MacHebrew", "MacIceland", "MacRoman", "MacRomania", "MacSymbol", "MacThai", "MacTurkish", "MacUkraine", "SJIS", "UTF8" }; public UTF8URL () { super("Character set demo"); Panel p = new Panel (); Choice c = new Choice(); TextArea t = new TextArea("", 3, 45, TextArea.SCROLLBARS_VERTICAL_ONLY); for (int i = 0 ; i < charset_list.length; i++){ c.add(charset_list[i]); } c.addItemListener(this); encoding = charset_list[0]; try { btc = CharToByteConverter.getConverter(encoding); } catch (Exception e) { System.err.println(e.toString() + " " + encoding); } t.addTextListener(this); p.add(t); p.add(c); add(p); pack(); show(); } public void itemStateChanged(ItemEvent ie){ encoding = ((Choice)(ie.getSource())).getSelectedItem(); } public void textValueChanged(TextEvent te){ String input_text = ((TextArea)(te.getSource())).getText(); int len = input_text.length(); byte [] octets = new byte[len]; // Transcode the user input characters to the specified encoding try { int length = btc.convert(input_text.toCharArray(), 0, len, octets, 0, len); String converted = new String(octets); // Perform URL escaping for unsafe characters encoded_text = URLEncoder.encode(converted); System.out.println( encoding + "\t" + input_text + "\t" + encoded_text); } catch (Exception e) { System.err.println(e.toString()); } } public static void main (String[] args) { UTF8URL udemo = new UTF8URL(); } } \ /gra
Received on Wednesday, 16 April 1997 17:00:02 UTC