html_url,issue_url,id,node_id,user,created_at,updated_at,author_association,body,reactions,performed_via_github_app,issue
https://github.com/pydata/xarray/issues/1193#issuecomment-270737056,https://api.github.com/repos/pydata/xarray/issues/1193,270737056,MDEyOklzc3VlQ29tbWVudDI3MDczNzA1Ng==,6645714,2017-01-05T19:38:47Z,2017-01-05T20:01:34Z,CONTRIBUTOR,"I found that changing char_to_string resulted in dropping the 0 length dimension:
before:
```
Dimensions: (dim0: 1, dim1: 0)
Coordinates:
* dim0 (dim0) int64 0
* dim1 (dim1) int64
Data variables:
x (dim0, dim1) |S1
```
after:
```
Dimensions: (dim0: 1)
Coordinates:
* dim0 (dim0) int64 0
Data variables:
x (dim0) |S1
```
So, instead I modified conventions.decode_cf_variable to not wrap character arrays with a terminal zero length dimension as CharToStringArray:
```
if concat_characters:
if data.dtype.kind == 'S' and data.dtype.itemsize == 1 and data.shape[-1] != 0:
dimensions = dimensions[:-1]
data = CharToStringArray(data)
```
And this appears to round-trip correctly.
EDIT: fixed output when modifying char_to_string","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,199032440