To get Unicode path support on Windows, I make a custom HDF5 build. I make two 
changes to the H5win32defs.h file.

First, I add a static function that converts UTF8 to Windows UCS2:
static int utf8open(const char* filename, int oflag, int pmode)
{
    // In order to open files with Unicode paths, Windows requires that I call 
the _wopen function
    // rather than pass UTF8 to _open. Therefore, this function will first 
translate the filename
    // to UCS2.
    WCHAR wfilename[1024];
    int cch = MultiByteToWideChar(
        CP_UTF8,
        MB_ERR_INVALID_CHARS,
        filename,
        -1,
        wfilename,
        ARRAYSIZE(wfilename));
    if (0 == cch)
    {
        // File or path not found is the most reasonable of the documented 
error codes to return
        // from this function if there is a text encoding error in the file 
name.
        errno = ENOENT;
        return -1;
    }

    // _O_BINARY must be set in Windows to avoid CR-LF <-> LF EOL 
transformations when performing
    // I/O. _O_NOINHERIT must be set to prevent child processes inheriting the 
handle.
    return _wopen(wfilename, oflag | _O_BINARY | _O_NOINHERIT, pmode);
}

Second, I change the #define HDopen in that file to use my function:
#define HDopen(S,F,M)       utf8open(S,F|_O_BINARY,M)

Before calling HDF5 functions that take file paths, I also have to convert the 
UCS2 paths I get from Windows API calls to UTF8. It’s kind of inconvenient, but 
so far I haven’t had any problems passing the UTF8-encoded paths through HDF5 
using this technique, and the required changes are not very invasive.

Matthew

From: Hdf-forum [mailto:[email protected]] On Behalf Of 
Elvis Stansvik
Sent: Monday, July 4, 2016 3:40 AM
To: [email protected]
Subject: [Hdf-forum] Cross-platform Unicode filename support?

Hi all,
Anyone know what happened with

    
http://hdf-forum.184993.n3.nabble.com/hdf-forum-Unicode-filenames-on-Windows-td194309.html
? That thread ended with Quincey saying

    "Seems like a reasonable idea.  I've filed a bug in our bug tracker
and it'll get prioritized with the other things there, but we'd be
happy to accept a well-tested patch from the community also."
Was it ever worked on / brought up within the HDF5 Group?
Thanks in advance,
Elvis
PS. Would love if there was a public bug tracker. DS.
_______________________________________________
Hdf-forum is for HDF software users discussion.
[email protected]
http://lists.hdfgroup.org/mailman/listinfo/hdf-forum_lists.hdfgroup.org
Twitter: https://twitter.com/hdf5

Reply via email to