import java.sql.*;

public class TestEncoding {
  public static void main(String[] args) throws Exception {
      Class.forName("org.postgresql.Driver");

      Connection connection = DriverManager.getConnection(args[0], args[1], args[2]);
      Statement stmt = connection.createStatement();

      try {
          stmt.executeUpdate("DROP TABLE foo");
      } catch (SQLException e) {
          // ignored
      }

      stmt.executeUpdate("CREATE TABLE foo (data TEXT)");
      stmt.executeUpdate("INSERT INTO foo(data) VALUES ('\ud83d\ude0a')");

      PreparedStatement ps = connection.prepareStatement("SELECT * from foo");
      ResultSet rs = ps.executeQuery();

      for (int row = 1; rs.next(); ++row) {
          try {
              String s = rs.getString(1);
              
              StringBuilder sb = new StringBuilder();
              for (int i = 0; i < s.length(); ++i) {
                  char ch = s.charAt(i);
                  sb.append("\\u")
                      .append(Integer.toHexString((ch >> 12) & 15))
                      .append(Integer.toHexString((ch >> 8) & 15))
                      .append(Integer.toHexString((ch >> 4) & 15))
                      .append(Integer.toHexString(ch & 15));
              }
              
              System.err.println(row + ": " + sb);
          } catch (Throwable t) {
              System.err.println(row + ": " + t);
          }
      }

      connection.close();
  }
}