changeset 32:d1c6cb6d9a2f

UTF-8 TEST
author fuchita
date Sat, 10 Nov 2007 17:30:14 +0900
parents 593f915dd6ff
children 1b05995d3118
files test/TestUTF8.java
diffstat 1 files changed, 132 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/TestUTF8.java	Sat Nov 10 17:30:14 2007 +0900
@@ -0,0 +1,132 @@
+//package rep;
+package test;
+
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.charset.CharacterCodingException;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
+
+import remoteeditor.command.REPCommand;
+import remoteeditor.network.REP;
+
+//import remoteeditor.command.REPCommand;
+
+public class TestUTF8 {
+	
+	public static ByteBuffer pack(REPCommand command){
+		//command.setString(command.string + ":temp:123456");	//あとで書き直す
+    	System.out.println("send command: " + command.toString());
+    	ByteBuffer buffer = ByteBuffer.allocateDirect(24+(command.string).length()*2);
+    	buffer.clear();  // position = 0 
+    	buffer.putInt(command.cmd); buffer.putInt(command.sid); buffer.putInt(command.eid);
+    	buffer.putInt(command.seq); buffer.putInt(command.lineno); 
+    	buffer.putInt(command.string.length()*2); 
+    	for(int i=0;i<command.string.length();i++) {
+			buffer.putChar(command.string.charAt(i));
+		}	
+    	buffer.flip();    // limit = current position, position = 0
+		return buffer;
+	}
+	
+	public static ByteBuffer packUConv(REPCommand command){		
+		//command.setString(command.string + ":temp:123456");	//あとで書き直す
+    	System.out.println("send command byUTF8: " + command.toString());    	
+    	ByteBuffer buffer = ByteBuffer.allocateDirect(24+(command.string).length()*5);
+    	buffer.clear();  // position = 0 
+    	buffer.putInt(command.cmd); buffer.putInt(command.sid); buffer.putInt(command.eid);
+    	buffer.putInt(command.seq); buffer.putInt(command.lineno); 
+    	//buffer.putInt(command.string.length()*2);     	
+    	
+
+    	int pos = buffer.position();
+    	buffer.putInt(0);     	
+    	
+    	/*for(int i=0;i<command.string.length();i++) {
+			buffer.putChar(command.string.charAt(i));
+		}*/	
+    	//buffer.position(pos);    // limit = current position, position = 0
+
+    	//Encode to UTF8
+    	//CharBuffer cb = buffer.asCharBuffer();    	
+    	CharBuffer cb = CharBuffer.wrap(command.string);
+    	
+		Charset charset = Charset.forName("UTF-8");
+		CharsetEncoder encoder = charset.newEncoder();
+		//try {
+		encoder.encode(cb, buffer, false);
+		/*} catch (CharacterCodingException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}*/
+		//byte[] outdata	= tmpbuffer.array();
+		
+		buffer.putInt(pos, (buffer.position()-pos-4));
+		buffer.rewind();
+		
+		return buffer;    	
+	}
+	
+	
+	public static void unpack_check(ByteBuffer buffer) {
+		final int HEADER_SIZE = 24;
+		String text = "";
+		int cmd = buffer.getInt();
+		int sid = buffer.getInt();
+		int eid = buffer.getInt();
+		int seqid = buffer.getInt();
+		int lineno = buffer.getInt();
+		int textsiz = buffer.getInt();
+		System.out.println("textsiz:" +textsiz);
+		//CharBuffer cb = buffer.asCharBuffer();
+		/*for(int i=0;i<textsiz;i++) {
+			text +=buffer.getChar();
+		}*/
+		//CharBuffer cb = CharBuffer.allocate(textsiz);
+		//CharBuffer cb = buffer.asCharBuffer();
+		Charset charset1 = Charset.forName("UTF-8");
+		CharsetDecoder decoder = charset1.newDecoder();
+		CharBuffer cb = null;
+		try {
+			cb = decoder.decode(buffer);
+		} catch (CharacterCodingException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+			
+		System.out.println("cb siz:" +cb.length());
+		//cb.flip();
+		//String string = text;
+		System.out.println(cb.toString());
+		//getSocket(string);
+		//REPCommand repcommand = new REPCommand(cmd, sid, eid, seqid, lineno, textsiz, string);
+		//System.out.println("received command: " + repcommand.toString());
+		//getSocket(repcommand);
+		//System.out.println("received command: " + repcommand.toString());
+		//return repcommand;
+	}
+	
+	public static void main(String[] args) throws IOException{
+		String text = "あおいえおかきくけこ";
+		REP rep;
+		REPCommand utf8buf = new REPCommand(0, 0, 0, 0, 0, 0, text);
+	    REPCommand buf = new REPCommand(0, 0, 0, 0, 0, 0, text);
+	    ByteBuffer buf1,buf2;
+
+	    buf1 = pack(buf);
+	    buf2 = packUConv(utf8buf);
+	   	    
+	    System.out.println("Encode TEST1.");
+		System.out.println("Plane ByteBuffer :" +buf1.toString());
+		System.out.println("Plane ByteBuffer length :" +buf1.capacity());		
+
+		System.out.println("UTF-8 Encoded byteBuffer :" +buf2.toString());
+		System.out.println("UTF-8 Encoded text length :" +buf2.capacity());
+
+		//unpack_check(buf1);
+		unpack_check(buf2);
+	}
+}