code: public static byte[] encodeString(String str, Type type) {
      byte[] bytes = str.getBytes(type.charset());
      // The extra 5 bytes is for metadata (character count + byte count) and the NULL terminator.
      ByteArrayDataOutput output = ByteStreams.newDataOutput(bytes.length + 5);
      encodeLength(output, str.length(), type);
      if (type == Type.UTF8) {  // Only UTF-8 strings have the encoding length.
        encodeLength(output, bytes.length, type);
      }
      output.write(bytes);
      // NULL-terminate the string
      if (type == Type.UTF8) {
        output.write(0);
      } else {
        output.writeShort(0);
      }
      return output.toByteArray();
    }
docs: Encodes a string in either UTF-8 or UTF-16 and returns the bytes of the encoded string.
  Strings are prefixed by 2 values. The first is the number of characters in the string.
  The second is the encoding length (number of bytes in the string).
  
  <p>Here's an example UTF-8-encoded string of ab©:
  <pre>03 04 61 62 C2 A9 00</pre>
  
  @param str The string to be encoded.
  @param type The encoding type that the {@link ResourceString} should be encoded in.
  @return The encoded string.