Вы можете использовать любую кодировку, какую пожелаете, вам просто нужно быть осторожным с такими вещами, как порядок следования байтов. Windows внутренне использует UTF-16 (little-endian), поэтому, если вы ожидаете, что большинство систем будет Windows, то вам, вероятно, следует пойти на это. В противном случае я бы порекомендовал UTF-8, у которого нет проблем с порядком байтов, о которых стоит беспокоиться.
Если вы используете UTF-16 (или UTF-32, который я определенно не рекомендую), недвусмысленно разъясните, что такое порядковый номер данных в проводе. Затем для каждого клиента, который читает или записывает символ Unicode в сетевой сокет, преобразуйте из собственного порядкового номера платформы в сетевой порядковый номер - это либо неоперативный, либо байтовый обмен.