<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    I was thinking something like the following:<br>
    <br>
                 if( (pszInput[iIn] >= 'a' && pszInput[iIn]
    <= 'z')<br>
                     || (pszInput[iIn] >= 'A' &&
    pszInput[iIn] <= 'Z')<br>
                     || (pszInput[iIn] >= '0' &&
    pszInput[iIn] <= '9')<br>
    -                || pszInput[iIn] == '_' || pszInput[iIn] == '.' )<br>
    +                || pszInput[iIn] == '$' && pszInput[iIn] ==
    '-'<br>
    +                || pszInput[iIn] == '_' || pszInput[iIn] == '.' <br>
    +                || pszInput[iIn] == '+' && pszInput[iIn] ==
    '!'<br>
    +                || pszInput[iIn] == '*' && pszInput[iIn] ==
    '\''<br>
    +                || pszInput[iIn] == '(' && pszInput[iIn] ==
    ')'<br>
    +                || pszInput[iIn] == '"' && pszInput[iIn] ==
    ',' )<br>
    <br>
    which follows the list of special characters that may be used
    unencoded within a URL.<br>
    <pre style="color: rgb(0, 0, 0); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; white-space: pre-wrap;">   Thus, only alphanumerics, the special characters "$-_.+!*'(),", and
   reserved characters used for their reserved purposes may be used
   unencoded within a URL.

</pre>
    That list is mutually exclusive from the list you cited as being a
    concern, which I agree with.<br>
    <br>
    <br>
    Tim<br>
    <pre style="color: rgb(0, 0, 0); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; white-space: pre-wrap;">
</pre>
    <br>
    <div class="moz-cite-prefix">On 17/06/2014 6:24 PM, Even Rouault
      wrote:<br>
    </div>
    <blockquote
      cite="mid:201406172324.20899.even.rouault@mines-paris.org"
      type="cite">
      <pre wrap="">Le lundi 16 juin 2014 14:20:59, Timothy Astle a écrit :
</pre>
      <blockquote type="cite">
        <pre wrap="">Hi all,

Does anyone know why CPLEscapeString
(<a class="moz-txt-link-freetext" href="https://svn.osgeo.org/gdal/trunk/gdal/port/cpl_string.cpp">https://svn.osgeo.org/gdal/trunk/gdal/port/cpl_string.cpp</a>) character
encodes characters that are valid as-is according to
<a class="moz-txt-link-freetext" href="http://www.ietf.org/rfc/rfc1738.txt">http://www.ietf.org/rfc/rfc1738.txt</a>?

I just hit a situation where I noticed the WMS driver is converting
hyphens to %2D for layer names.  The 3rd party server doesn't handle it
(but it should) and this caught my attention.

Any thoughts?  Is it just a case where a patch would be welcome?
</pre>
      </blockquote>
      <pre wrap="">
Tim,

What would your patch do ? Implement the following from RFC1738 ? :

"Thus, only alphanumerics, the special characters "$-_.+!*'(),", and
reserved characters used for their reserved purposes may be used
unencoded within a URL."

Well, actually I think it should still encode the reserved characters (";",
 "/", "?", ":", "@", "=" and "&"), since valid use cases of CPLEscapeString(, 
CPLES_URL) might be do make sure that they are encoded.

Even

</pre>
    </blockquote>
    <br>
    <div class="moz-signature">-- <br>
      <div style="width:600px;"> Tim Astle<br>
        Development Manager<br>
        Web Technologies<br>
        <br>
        <a href="http://www.caris.com" style="color:#004680;"><strong>CARIS</strong></a><br>
        115 Waggoners Lane<br>
        Fredericton, New Brunswick<br>
        Canada    E3B 2L4<br>
        Tel: +1.506.458.8533     Fax: +1.506.459.3849<br>
        <a href="http://www.caris.com" style="color:#004680;">www.caris.com</a>
        <p style="margin-top:20px;"> <strong style="color:#373737;">Connect
            with CARIS</strong><br>
          <a href="http://www.twitter.com/CARIS_GIS"
            style="color:#004680;">Twitter</a> | <a
            href="http://www.linkedin.com/groups?mostPopular=&gid=3217878"
            style="color:#004680;">LinkedIn</a> | <a
href="https://www.facebook.com/pages/CARIS-The-Marine-GIS-Experts/123907500987669?v=app_4949752878"
            style="color:#004680;">Facebook</a> | <a
href="https://plus.google.com/b/114389770462919844434/114389770462919844434/posts">Google+</a>
          | <a href="http://www.youtube.com/user/CARISGIS"
            style="color:#004680;">YouTube</a> </p>
        <p style="margin-top:16px; line-height:1.2em;">Download your
          free copy of CARIS Easy View today!<br>
          <a href="http://www.caris.com/easyview" style="color:#004680;">www.caris.com/easyview</a></p>
        <p style="font-size:0.8em;">_________________________________________________________________________<br>
          This email and any files transmitted with it are confidential
          and intended only for the addressee(s). If you are not the
          intended recipient(s) please notify us by email reply. You
          should not use, disclose, distribute or copy this
          communication if received in error.</p>
        <p style="font-size:0.8em;"> Any views or opinions expressed in
          this email are solely those of the author and do not
          necessarily represent those of the company. No binding
          contract will result from this email until such time as a
          written document is signed on behalf of the company.</p>
      </div>
    </div>
  </body>
</html>