core/src/main/java/com/orientechnologies/common/serialization/types/OStringSerializer.java
@Override
  public String deserializeFromByteBufferObject(ByteBuffer buffer) {
    int len = buffer.getInt();

    final char[] chars = new char[len];
    final byte[] binaryData = new byte[2 * len];
    buffer.get(binaryData);

    for (int i = 0; i < len; i++)
      chars[i] = (char) ((0xFF & binaryData[i << 1]) | ((0xFF & binaryData[(i << 1) + 1]) << 8));

    return new String(chars);
  }

  /**
   * {@inheritDoc}
   */
  @Override
  public int getObjectSizeInByteBuffer(ByteBuffer buffer) {
    return buffer.getInt() * 2 + OIntegerSerializer.INT_SIZE;
  }

  /**
   * {@inheritDoc}
   */
  @Override
  public String deserializeFromByteBufferObject(ByteBuffer buffer, OWALChanges walChanges, int offset) {
    int len = walChanges.getIntValue(buffer, offset);

    final char[] chars = new char[len];
    offset += OIntegerSerializer.INT_SIZE;

    byte[] binaryData = walChanges.getBinaryValue(buffer, offset, 2 * len);

    for (int i = 0; i < len; i++)
      chars[i] = (char) ((0xFF & binaryData[i << 1]) | ((0xFF & binaryData[(i << 1) + 1]) << 8));

    return new String(chars);
  }

  /**
   * {@inheritDoc}
   */
  @Override
  public int getObjectSizeInByteBuffer(ByteBuffer buffer, OWALChanges walChanges, int offset) {
    return walChanges.getIntValue(buffer, offset) * 2 + OIntegerSerializer.INT_SIZE;
  }
}
@Override
  public String deserializeFromByteBufferObject(ByteBuffer buffer) {
    int len = buffer.getInt();

    final char[] chars = new char[len];
    final byte[] binaryData = new byte[2 * len];
    buffer.get(binaryData);

    for (int i = 0; i < len; i++)
      chars[i] = (char) ((0xFF & binaryData[i << 1]) | ((0xFF & binaryData[(i << 1) + 1]) << 8));

    return new String(chars);
  }

  /**
   * {@inheritDoc}
   */
  @Override
  public int getObjectSizeInByteBuffer(ByteBuffer buffer) {
    return buffer.getInt() * 2 + OIntegerSerializer.INT_SIZE;
  }

  /**
   * {@inheritDoc}
   */
  @Override
  public String deserializeFromByteBufferObject(ByteBuffer buffer, OWALChanges walChanges, int offset) {
    int len = walChanges.getIntValue(buffer, offset);

    final char[] chars = new char[len];
    offset += OIntegerSerializer.INT_SIZE;

    byte[] binaryData = walChanges.getBinaryValue(buffer, offset, 2 * len);

    for (int i = 0; i < len; i++)
      chars[i] = (char) ((0xFF & binaryData[i << 1]) | ((0xFF & binaryData[(i << 1) + 1]) << 8));

    return new String(chars);
  }

  /**
   * {@inheritDoc}
   */
  @Override
  public int getObjectSizeInByteBuffer(ByteBuffer buffer, OWALChanges walChanges, int offset) {
    return walChanges.getIntValue(buffer, offset) * 2 + OIntegerSerializer.INT_SIZE;
  }
}
{@inheritDoc}