I find sf::String::toUtf8 too hard to use because output is std::basic_string while sf::Utf<8> allows me to ger result almost within in a single string. I tried it and got what I need, but with some problems like having to resize declared strings manually so converted ones would fit into them.
Answering your question about what I am trying to do:
Client terminal displaying strings in cp_1251, client gui (label and editboxes) using widestring (seems like?), server processing requests to Database using UTF-8 strings as arguments.
So, when I receive widestring (or UTF-32? I am still not sure, but widestring works well when I use it as parameter; I don't want to, however, but TGUI documentation only said it's "sf::String"; also, UTF-8 doesn't display well with TGUI unless I convert to widestring.. ugh..) from gui, I need to handle all the encodings and decodings from client to server and then back.
Edited.