public String readUnicodeString()
          throws IOException {
    int off = 0;
    int len = readInt();
    byte[] s = new byte[len];


    while (off < len) {
      off += read(s, off, len - off);
    }

    String retval = new String(s,
            "UTF-8");
    if (trace == API_TRACE_DETAILED) {
      debugNote("readUnicodeString: " + retval);
    }

    return retval;
  }