<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>Hi Michael,</p>
    <p>I assume you're talking about the C# or Java bindings . In the
      case of the Python bindings, given the dynamic typing of the
      language, the typemap code tries to convert to UTF-8 when possible
      or return a bytes if not, and is also tolerant on if it receives a
      Unicode string or a bytes as input.</p>
    <p>The issue is that even if *nominally* exchanges in the GDAL API
      are supposed to be in UTF-8, there is the possibility that some
      drivers might return strings in a unknown encoding. That could be
      CSV for example, or shapefiles or mapinfo files whose declared
      encoding is not understood by GDAL. I believe there is a ticket
      about the possibility of creating 2 variants of the SWIG methods
      for which that could occur: one with UTF-8, one with a binary
      type. Actually that might be this PR
      <a class="moz-txt-link-freetext" href="https://github.com/OSGeo/gdal/pull/3825">https://github.com/OSGeo/gdal/pull/3825</a> that  got stale.</p>
    <p>Even</p>
    <div class="moz-cite-prefix">Le 25/03/2026 à 20:00, Michael via
      gdal-dev a écrit :<br>
    </div>
    <blockquote type="cite"
cite="mid:CACKw9A9bmKOTnFTcdJOW4m5a00ZxYutGP1Ox8DwOZrD7h44wTQ@mail.gmail.com">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <div dir="ltr">
        <div>Every function which returns char** has the "char **CSL"
          typemap applied, which causes strings in the returned array to
          be decoded with UTF-8.</div>
        <div><br>
        </div>
        <div>Every function which accepts a char** parameter has either
          the "char **options", "char **dict", or "char
          **dictAndCSLDestroy" typemap applied, which causes strings in
          the parameter's array to be encoded with UTF-8.</div>
        <div><br>
        </div>
        <div>However, many functions which return a single string value
          or accept single strings as arguments do not use UTF-8
          encoding. This causes several inconsistencies in the wrapper's
          behavior.</div>
        <div><br>
        </div>
        <div>For example, many times string values from string arrays
          which are UTF-8 are used in other functions which are not
          UTF-8.</div>
        <div><br>
        </div>
        <div>Some examples:</div>
        <div>- AlgorithmRegistry.GetAlgNames() returns a string array of
          algorithm names decoded with UTF-8, but
          AlgorithmRegistry.InstantiateAlg(string algName) does not
          encode algName with UTF-8.</div>
        <div>- Algorithm.GetArgNames() returns a string array of
          argument names decoded with UTF-8, but Algorithm.GetArg(string
          argName) does not encode argName with UTF-8.</div>
        <div>- GeomCoordinatePrecision.GetFormats() returns a string
          array of format names decoded with UTF-8, but
          GeomCoordinatePrecision.GetFormatSpecificOptions(string
          formatName) does not encode formatName with UTF-8.</div>
        <div><br>
        </div>
        <div>Also, some functions which return a string array have
          related functions which return a single string value, but the
          strings in the array are encoded with UTF-8 while the single
          string values are not. For example,
          AlgorithmArg.GetAsStringList() returns an array of strings
          decoded with UTF-8, but AlgorithmArg.GetAsString() does not
          decode its returned string with UTF-8.</div>
        <div><br>
        </div>
        <div>And finally, many other string functions which accept or
          return strings not encoded with UTF-8 probably _should be
          UTF-8_.</div>
        <div><br>
        </div>
        <div>Some examples:</div>
        <div>- Any "Get*Name" function or "name" property</div>
        <div>- Any "Get*Description" function</div>
        <div>- Any "Create*", "Delete*", or "Get*" function which
          accepts a "*name" parameter</div>
        <div><br>
        </div>
        <div>Really, are there _any_ strings which _shouldn't_ be
          encoded with UTF-8? I can't find a single reason why every
          string passed to the wrapper should not be encoded as UTF-8,
          and no reason why every string retrieved from the wrapper
          should not be decoded with UTF-8.</div>
        <div><br>
        </div>
        <span class="gmail_signature_prefix">-- </span><br>
        <div dir="ltr" class="gmail_signature"
          data-smartmail="gmail_signature">Michael Bucari</div>
      </div>
      <br>
      <fieldset class="moz-mime-attachment-header"></fieldset>
      <pre wrap="" class="moz-quote-pre">_______________________________________________
gdal-dev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:gdal-dev@lists.osgeo.org">gdal-dev@lists.osgeo.org</a>
<a class="moz-txt-link-freetext" href="https://lists.osgeo.org/mailman/listinfo/gdal-dev">https://lists.osgeo.org/mailman/listinfo/gdal-dev</a>
</pre>
    </blockquote>
    <pre class="moz-signature" cols="72">-- 
<a class="moz-txt-link-freetext" href="http://www.spatialys.com">http://www.spatialys.com</a>
My software is free, but my time generally not.</pre>
  </body>
</html>