On Sun, Feb 14, 2010 at 1:24 PM, Vladimir Prus
Sachin Garg wrote:
I don't think that this has anything to do with normalization. By looking at the source, Filesystem, by default, uses the global locale to convert betwen narrow and wide paths, and the default locale in your case seems to perform no conversion. That is, it just takes every 8 bit char and converts it to a 32 bit wchar_t. This, of course, doesn't work when the source is UTF-8, regardless of its normalization.
It looks like you are correct, thanks :-)
I added this to my code and it fixes the problem:
std::locale global_loc = std::locale(); boost::filesystem::detail::utf8_codecvt_facet utf8_facet(1); std::locale loc(global_loc, &utf8_facet); boost::filesystem::wpath_traits::imbue(loc);
Taken from: http://archives.free.net.ph/message/20071110.132150.af9dc620.en.html
And it seems this is an issue since atleast 2007,
Filing an issue on http://svn.boost.org generally increases the chances that something will be fixed. Of course, please try to provide a detailed description.
I have filed a bug, please add any information if my description isn't complete enough. https://svn.boost.org/trac/boost/ticket/3928 SG