Для пояснения, хотя ваш докер привязывается только к интерфейсу ipv6 («:::»), а не к ipv4 («0.0.0.0»), Docker запрещает петлевое подключение к своему docker-прокси с хоста. Я считаю, что это также не работает во всех сетевых режимах.
Если вы подключаетесь из одного контейнера в другой, используйте имя контейнера через docker-dns и частную локальную сеть. Например, если ваш контейнер MariaDB называется «maria», я считаю, что DNS докера на 127.0.0.11 предлагает поиск имени «maria» для 172. . . * Ipv4, к которому могут подключаться другие контейнеры. если в той же 172. {подсеть}. . / 16 в качестве вашего хоста MariaDB. Соединитесь с «Марией» в другом контейнере, и TCP волшебным образом попадет в нужное место.
Если вы пытаетесь подключиться с хоста докера к контейнеру, это проблема, с которой я смирился с проксированием моего маршрутизатора через шпилечный NAT к тем же портам upnp, которые я экспортировал через Внешний доступ в Synology , который кажется плохим решением, но работает сегодня.
Преобразование Unicode не является простой задачей. Используя iconv не походит на излишество вообще мне. Возможно, существует версия библиотеки iconv, который можно использовать для предотвращения, делают систему () вызовом, если это - то, чего Вы хотите избежать.
Я мог бы предложить ICU? Это - довольно "промышленный стандарт" способ обработать проблемы i18n.
Я не использовал версию C сам, но я подозреваю, что ucnv_fromUnicode мог бы быть функцией, которая Вы после.
UTF8 работает путем кодирования длины закодированной кодовой точки в самые высокие биты закодированных байтов. см. http://en.wikipedia.org/wiki/UTF-8#Description
Я нашел эту небольшую функцию в C здесь http://www.deanlee.cn/programming/convert-unicode-to-utf8/, не протестировал его все же.