UTF8 string dtype
As far as I understand, for strings pandas uses an `object` dtype with Unicode representation where each character takes 4 bytes, similarly to numpy `U` dtype,
```py
>>> import  numpy as np
>>> x = np.array(["ac", "bd"])
>>> x.nbytes / (len(x) * 2)   # bytes per char
4.0
>>> df = pd.DataFrame({'a': x})
>>> df.dtypes
a    object
dtype: object
>>> df['a'].values.nbytes / (len(x) * 2)  # bytes per char
4.0
```

Wouldn't it be possible to support UTF-8 encoded strings? That would decrease by 2-4 the memory requirements, for a number of languages. For instance parquet and arrow seem to be doing that [[1](https://github.com/apache/parquet-format/blob/master/LogicalTypes.md#string)], [[2](https://arrow.apache.org/docs/cpp/api/datatype.html#_CPPv4N5arrow4Type6STRINGE)].

Since each cell is a variable length string represented as an object, using UTF8 might be possible unlike for fixed length numpy strings (https://github.com/pandas-dev/pandas/issues/5261)?

(Not sure if there were other discussions about this previously; "utf8", "string", and "dtype" are pretty noisy search key words).