Есть сервер под Linux. Есть клиент под винду на C#.
С сервера передаются строки в utf8. Тип данных wchar_t, длиной 4 байта. Клиенту они передаются тоже по 4 байта на символ.
На клиенте принимается строка и переводится в Encoding.Unicode через Encoding.UTF8.GetString().
Проблема:
Т.к. utf8 не имеет жесткого размера, а сервер присылает строку с жестким количеством байт на символ, то появляется бага.
Вместо строчки:
['H', 'e', 'l', 'l', 'o'] получаем:
['H', 0, 0, 0, 'e', 0, 0, 0, 'l', 0, 0, 0, 'l', 0, 0, 0, 'o', 0, 0, 0]
Т.е. на каждый распознанный конвертером символ получаем дополнительно 3 нуля. Фактически символ "умещался" в один байт, а сервер прислал 4 байта.
Как лучше избавиться от такого косяка?.
Сейчас клиент врукопашную удаляет ненужные нули. Но тогда при передаче серверу нужно будет "наращивать" нули.

И это всё кажется жутко криво.

Есть еще вариант использовать на сервере iconv, но он(iconv) на сервере почему то падает.