Just to add a small note regarding OS X (and iOS) and UTF-8 filenames: The HFS+ filesystem stores accented characters in decomposed form, which can differ from the filename given to an API that creates the file such as fopen(..., "wb").

Applications that store a filename (e.g. into a preference or MRU file) might store it in precomposed form, which won't match what the filesystem uses and risks a file-not-found error. e.g. on iOS, text input gives strings in precomposed form.

More info is available at
http://stackoverflow.com/questions/6153345/different-utf8-encoding-in-filenames-os-x

Ray



On 1/9/2017, Monday 2:03 AM, Damian Dixon wrote:
Hi Victor,

If you set GDAL_FILENAME_IS_UTF8 to YES then you need to pass in filenames and paths encoded as UTF8.

This means that on Windows you will need to do additional work to convert from MBCS or UTF16/UCS2 to UTF8.

If your application is built as MBCS then what you essentially have is a multi-byte string encoding which is the Windows local code page.

If your application is built for Unicode then you have UTF16/UCS2 so you have to convert the filenames to UTF8 for GDAL/OGR to work.

If you save the filenames as part of an application specific configuration then you need to consider how you will read read that data back in if the Windows code page changes. This is not an easy task unless you also save the code page as well. It also becomes a bit of a mess supporting this on non-Windows.

The approach we took was to convert our Windows applications to Unicode and store/use all paths/filenames as UTF8 for portability to Linux/Android/Solaris.

Regards
Damian

PS. Microsoft has deprecated MBCS build of MFC.



On 9 January 2017 at 09:31, Poughon Victor <[email protected] <mailto:[email protected]>> wrote:

    Hi,

    We are using GDAL in OTB and recently we had a bug report about
    opening non
    ASCII filenames on Windows 10 [0]. They suggest a fix using:

    > CPLSetConfigOption("GDAL_FILENAME_IS_UTF8","NO");

    The test case is GDALOpen() on a file named 你好.tif, which I
    confirmed works
    fine on Linux, but not on Windows 7 or 10.

    So my question is to have some clarification on this option, to
    know if it's
    potentially the correct fix for this problem. The doc says:

    > This effectively restores the pre-GDAL1.8 behavior for handling
    filenames on
    > Windows and might be appropriate for applications that treat
    filenames as
    > being in the local encoding.

    What does it mean exactly to consider filenames to be in the local
    encoding? And
    how do I know if my application [1] does that?

    Cheers,

    [0] https://github.com/orfeotoolbox/OTB/pull/14
    <https://github.com/orfeotoolbox/OTB/pull/14>
    [1]
    
https://github.com/janestar/OTB/blob/f6ffdc17ab3d7aa91726f03ed619fee806eb508a/Modules/IO/IOGDAL/src/otbGDALDriverManagerWrapper.cxx#L55
    
<https://github.com/janestar/OTB/blob/f6ffdc17ab3d7aa91726f03ed619fee806eb508a/Modules/IO/IOGDAL/src/otbGDALDriverManagerWrapper.cxx#L55>

    Victor Poughon




    _______________________________________________
    gdal-dev mailing list
    [email protected] <mailto:[email protected]>
    http://lists.osgeo.org/mailman/listinfo/gdal-dev
    <http://lists.osgeo.org/mailman/listinfo/gdal-dev>




_______________________________________________
gdal-dev mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/gdal-dev


_______________________________________________
gdal-dev mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/gdal-dev

Reply via email to