That's not CryptoPP problem, but rather broken standard C++ unicode
support.

On windows you can use non-standard extention to fstreams -- they can
be created from FILE handles, and FILEs can be created using _wfopen.
And FileSink/Source can be created using fstreams.

std::wstring path = L"D:\bla.txt";
FILE* handle = _wfopen(path, L"rb");
std::ifstream file(handle);
CryptoPP::FileSource(file, ...);

On Linux you will have to convert you std::wstring into UTF8 encoded
std::string first. (Using your favorite UTF8 conversion libraries :)).

Note that using UTF8 converted string on windows doesn't seem to work.

On Jun 24, 10:10 pm, Kincorn <[email protected]> wrote:
> I'm a new user, and Crypto++ is really wonderful and powerful,
> haha ...
>
> When using FileSink with path including non-ascii chars (e.g.
> chinese), I've got the exception:
> "FileSink: error opening file for writing: D:\Project\Crypto\测试
> \privkey.txt"
> But it's well run in ascii environment.
>
> And then, I found out that something's wrong in function wbstowcs_s()
> in STL class fstream as the default local setting is C-Locale. So I
> can call function setlocale(LC_ALL, szCodePage) to resolve it, but
> it's really troubled, isn't it? And the key-problem is, when I use a
> special CodePage, it cann't work in another CodePage environment!
>
> And my project is unicode-based, all the code like "std::string, char
> [], ..." in Crypto++ may result unpredictable issues.
>
> Has CryptoPP got the unicode version? If not, how can I fix the
> problem?
> Thanks for your advice...
>
> Thanks,
> Kincorn
>
> Development environment:
> PC x86
> Windows XP SP2
> Visual Studio 2005
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the "Crypto++ Users" 
Google Group.
To unsubscribe, send an email to [email protected].
More information about Crypto++ and this group is available at 
http://www.cryptopp.com.
-~----------~----~----~----~------~----~------~--~---

Reply via email to