 <p>Your problem has nothing to do with SFML, you are just reading your file incorrectly.</p> <p>C++ uses wide strings (<code>std::wstring</code>) to represent UNICODE. This is <em>not</em> UTF-8. To read a <code>std::wstring</code> from an UTF-8 encoded file, please read <a href="http://stackoverflow.com/questions/4775437/read-unicode-utf-8-file-into-wstring">Read Unicode UTF-8 file into wstring</a> and use the second answer.</p> <p>In case the order changes over time, that would be the one that tells you to use this function:</p> <pre><code>#include &lt;sstream&gt; #include &lt;fstream&gt; #include &lt;codecvt&gt; std::wstring readFile(const char* filename) { std::wifstream wif(filename); wif.imbue(std::locale(std::locale::empty(), new std::codecvt_utf8&lt;wchar_t&gt;)); std::wstringstream wss; wss &lt;&lt; wif.rdbuf(); return wss.str(); } </code></pre> <p>Once you have obtained a valid <code>std::wstring</code> from your file, you should be able to use it with SFML without problems.</p>