diff --git a/java/src/com/tigervnc/rdr/InStream.java b/java/src/com/tigervnc/rdr/InStream.java
index ec2d6d7..9b29930 100644
--- a/java/src/com/tigervnc/rdr/InStream.java
+++ b/java/src/com/tigervnc/rdr/InStream.java
@@ -73,16 +73,16 @@
     if (len > maxStringLength)
       throw new Exception("InStream max string length exceeded");
 
-    char[] str = new char[len];
-    int i = 0;
-    while (i < len) {
-      int j = i + check(1, len - i);
-      while (i < j) {
-	str[i++] = (char)b[ptr++];
-      }
+    byte[] str = new byte[len+1];
+    readBytes(str, 0, len);
+    str[len] = 0;
+    String utf8string = new String();
+    try {
+      utf8string = new String(str,"UTF8");
+    } catch(java.io.UnsupportedEncodingException e) {
+      e.printStackTrace();
     }
-
-    return new String(str);
+    return utf8string;
   }
 
   // maxStringLength protects against allocating a huge buffer.  Set it
diff --git a/java/src/com/tigervnc/rdr/OutStream.java b/java/src/com/tigervnc/rdr/OutStream.java
index 7b4869e..06f832d 100644
--- a/java/src/com/tigervnc/rdr/OutStream.java
+++ b/java/src/com/tigervnc/rdr/OutStream.java
@@ -63,11 +63,11 @@
   public final void writeString(String str) {
     int len = str.length();
     writeU32(len);
-    for (int i = 0; i < len;) {
-      int j = i + check(1, len - i);
-      while (i < j) {
-	b[ptr++] = (byte)str.charAt(i++);
-      }
+    try {
+      byte[] utf8str = str.getBytes("UTF8");
+      writeBytes(utf8str, 0, len);
+    } catch(java.io.UnsupportedEncodingException e) {
+      e.printStackTrace();
     }
   }
 
diff --git a/java/src/com/tigervnc/rfb/CMsgReader.java b/java/src/com/tigervnc/rfb/CMsgReader.java
index 66b9d17..4123056 100644
--- a/java/src/com/tigervnc/rfb/CMsgReader.java
+++ b/java/src/com/tigervnc/rfb/CMsgReader.java
@@ -64,7 +64,13 @@
     }
     byte[] buf = new byte[len];
     is.readBytes(buf, 0, len);
-    handler.serverCutText(new String(buf), len);
+    String str = new String();
+    try {
+      str = new String(buf,"UTF8");
+    } catch(java.io.UnsupportedEncodingException e) {
+      e.printStackTrace();
+    }
+    handler.serverCutText(str, len);
   }
 
   protected void readFramebufferUpdateStart() 
diff --git a/java/src/com/tigervnc/rfb/CMsgWriter.java b/java/src/com/tigervnc/rfb/CMsgWriter.java
index 79f5ee9..7abbc09 100644
--- a/java/src/com/tigervnc/rfb/CMsgWriter.java
+++ b/java/src/com/tigervnc/rfb/CMsgWriter.java
@@ -144,7 +144,12 @@
     startMsg(MsgTypes.msgTypeClientCutText);
     os.pad(3);
     os.writeU32(len);
-    os.writeBytes(str.getBytes(), 0, len);
+    try {
+      byte[] utf8str = str.getBytes("UTF8");
+      os.writeBytes(utf8str, 0, len);
+    } catch(java.io.UnsupportedEncodingException e) {
+      e.printStackTrace();
+    }
     endMsg();
   }
 
diff --git a/java/src/com/tigervnc/rfb/CSecurityManaged.java b/java/src/com/tigervnc/rfb/CSecurityManaged.java
index 3502289..2461682 100644
--- a/java/src/com/tigervnc/rfb/CSecurityManaged.java
+++ b/java/src/com/tigervnc/rfb/CSecurityManaged.java
@@ -37,7 +37,12 @@
 
     // Return the response to the server
     os.writeU8(username.length());
-	  os.writeBytes(username.toString().getBytes(), 0, username.length());
+    try {
+      byte[] utf8str = username.toString().getBytes("UTF8");
+      os.writeBytes(utf8str, 0, username.length());
+    } catch(java.io.UnsupportedEncodingException e) {
+      e.printStackTrace();
+    }
     os.flush();
     int serverPort = is.readU16();
     //if (serverPort==0) { return true; };
diff --git a/java/src/com/tigervnc/rfb/CSecurityPlain.java b/java/src/com/tigervnc/rfb/CSecurityPlain.java
index c790852..707915c 100644
--- a/java/src/com/tigervnc/rfb/CSecurityPlain.java
+++ b/java/src/com/tigervnc/rfb/CSecurityPlain.java
@@ -37,8 +37,15 @@
     // Return the response to the server
     os.writeU32(username.length());
     os.writeU32(password.length());
-	  os.writeBytes(username.toString().getBytes(), 0, username.length());
-	  os.writeBytes(password.toString().getBytes(), 0, password.length());
+    byte[] utf8str;
+    try {
+      utf8str = username.toString().getBytes("UTF8");
+      os.writeBytes(utf8str, 0, username.length());
+      utf8str = password.toString().getBytes("UTF8");
+      os.writeBytes(utf8str, 0, password.length());
+    } catch(java.io.UnsupportedEncodingException e) {
+      e.printStackTrace();
+    }
     os.flush();
     return true;
   }
diff --git a/java/src/com/tigervnc/rfb/CSecurityVncAuth.java b/java/src/com/tigervnc/rfb/CSecurityVncAuth.java
index f047f53..75673d5 100644
--- a/java/src/com/tigervnc/rfb/CSecurityVncAuth.java
+++ b/java/src/com/tigervnc/rfb/CSecurityVncAuth.java
@@ -41,8 +41,14 @@
     // Calculate the correct response
     byte[] key = new byte[8];
     int pwdLen = passwd.length();
+    byte[] utf8str = new byte[pwdLen];
+    try {
+      utf8str = passwd.toString().getBytes("UTF8");
+    } catch(java.io.UnsupportedEncodingException e) {
+      e.printStackTrace();
+    }
     for (int i=0; i<8; i++)
-      key[i] = i<pwdLen ? (byte)passwd.charAt(i) : 0;
+      key[i] = i<pwdLen ? utf8str[i] : 0;
     DesCipher des = new DesCipher(key);
     for (int j = 0; j < vncAuthChallengeSize; j += 8)
       des.encrypt(challenge,j,challenge,j);
diff --git a/java/src/com/tigervnc/vncviewer/CConn.java b/java/src/com/tigervnc/vncviewer/CConn.java
index bda9cff..26dd2a5 100644
--- a/java/src/com/tigervnc/vncviewer/CConn.java
+++ b/java/src/com/tigervnc/vncviewer/CConn.java
@@ -416,7 +416,7 @@
     viewport = new ViewportFrame(cp.name(), this);
     viewport.setUndecorated(fullScreen);
     ClassLoader loader = this.getClass().getClassLoader();
-    URL url = loader.getResource("tigervnc.ico");
+    URL url = loader.getResource("com/tigervnc/vncviewer/tigervnc.ico");
     ImageIcon icon = null;
     if (url != null) {
       icon = new ImageIcon(url);
diff --git a/java/src/com/tigervnc/vncviewer/ClipboardDialog.java b/java/src/com/tigervnc/vncviewer/ClipboardDialog.java
index 9753b15..eeeeb25 100644
--- a/java/src/com/tigervnc/vncviewer/ClipboardDialog.java
+++ b/java/src/com/tigervnc/vncviewer/ClipboardDialog.java
@@ -49,13 +49,6 @@
     pack();
   }
 
-  static Clipboard systemClipboard;
-  static {
-    try {
-      systemClipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
-    } catch (Exception e) { }
-  }
-
   public void initDialog() {
     textArea.setText(current);
     textArea.selectAll();
@@ -69,10 +62,11 @@
 
   public void serverCutText(String str, int len) {
     setContents(str);    
-    if (systemClipboard != null) {
+    Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard();
+    if (cb != null) {
       StringSelection ss = new StringSelection(str);
       try {
-        systemClipboard.setContents(ss, ss);
+        cb.setContents(ss, ss);
       } catch(Exception e) {
         vlog.debug(e.toString());
       }
diff --git a/java/src/com/tigervnc/vncviewer/DesktopWindow.java b/java/src/com/tigervnc/vncviewer/DesktopWindow.java
index 4fd80d3..d008b41 100644
--- a/java/src/com/tigervnc/vncviewer/DesktopWindow.java
+++ b/java/src/com/tigervnc/vncviewer/DesktopWindow.java
@@ -30,6 +30,7 @@
 import java.awt.image.*;
 import java.awt.datatransfer.DataFlavor;
 import java.awt.datatransfer.Transferable;
+import java.awt.datatransfer.Clipboard;
 import javax.swing.*;
 
 import com.tigervnc.rfb.*;
@@ -305,12 +306,12 @@
   String oldContents = "";
   
   synchronized public void checkClipboard() {
-    if (ClipboardDialog.systemClipboard != null &&
-        cc.viewer.sendClipboard.getValue()) {
-      Transferable t = ClipboardDialog.systemClipboard.getContents(this);
+    Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard();
+    if (cb != null && cc.viewer.sendClipboard.getValue()) {
+      Transferable t = cb.getContents(null);
       if ((t != null) && t.isDataFlavorSupported(DataFlavor.stringFlavor)) {
         try {
-          String newContents = (String) t.getTransferData(DataFlavor.stringFlavor);
+          String newContents = (String)t.getTransferData(DataFlavor.stringFlavor);
           if (newContents != null && !newContents.equals(oldContents)) {
             cc.writeClientCutText(newContents, newContents.length());
             oldContents = newContents;
