Re: Problems with file names containing latin accent characters

Germán Blando <[email protected]> Mon, 12 Nov 2007 19:16:23 -0300
Newsgroups gmane.comp.db.metakit
Message-ID <[email protected]>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
  <title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
Ok. Now I get your point. I'm going to undo may hack and use Metakit
that&nbsp; way.<br>
Thanks to both of you for the advice.<br>
German.<br>
<br>
Jean-Claude Wippler wrote:
<blockquote cite="mid:[email protected]"
 type="cite">
  <pre wrap="">Riccardo Cohen wrote:

  </pre>
  <blockquote type="cite">
    <pre wrap="">I noticed also that on windows, metakit needs utf8 file names. But did
not test on other platforms.I supposed all platforms need utf8 ?
    </pre>
  </blockquote>
  <pre wrap=""><!---->
Yes.

  </pre>
  <blockquote type="cite">
    <pre wrap="">Anyway I rather changed my code to give utf8 to metakit. Any precision
would be appreciated.
    </pre>
  </blockquote>
  <pre wrap=""><!---->
That's correct.  For maximum portability, all strings in and out of  
Metakit should be in UTF8.

  </pre>
  <blockquote type="cite">
    <pre wrap="">Tecnonucleo wrote:

    </pre>
    <blockquote type="cite">
      <pre wrap="">I've used Metakit for a while, and recently I had some issues with
file names containing accent characters, like &aacute; or &eacute;. It only occurs
in Windows XP. In Linux all works ok.
But in Windows, when the file name had latin accent characters,
Metakit suppress them and thus it tried to open a non existing file.
I debug into Metakit source code and I found that the character
missing happened in this line:

MultiByteToWideChar(CP_UTF8, 0, fname_,  - 1, wName, MAX_PATH);

I'm not an expert in Win32 API, but after some googling I decided to
change the CP_UTF8 parameter for CP_ACP. And then all began to work  
ok
as in Linux. The new version of the previous line now looks like  
that:

MultiByteToWideChar(CP_ACP, 0, fname_,  - 1, wName, MAX_PATH);

I'm not sure if it make sense to change the Metakit sources that way,
but in any case I want to share this issue and maybe get some  
feedback
about the patch I applied.
      </pre>
    </blockquote>
  </blockquote>
  <pre wrap=""><!---->
What you've done is change the calling convention so Metakit expects a  
Windows-specific "codepage" encoding.

(Google tells me that CP_ACP means "I do not care what the system  
default codepage is -- just use it")

While this works, you lose some flexibility: what if you wanted to  
save to a filename which has characters outside the range used in your  
own locale?  With UTF8 everywhere, you can use filenames with any  
characters in them on any system.  The consequence though, is that you  
have to do what Riccardo did: convert filenames to UTF8 before passing  
them to Metakit.

-jcw




  </pre>
</blockquote>
<br>
<pre class="moz-signature" cols="72">-- 
Saludos, Germ&aacute;n Blando

Contable IVA - Liquidaci&oacute;n de Iva para Estudios Contables
<a class="moz-txt-link-freetext"
 href="http://www.interfase-soft.com.ar/contableiva/">http://www.interfase-soft.com.ar/contableiva/</a>

Ubuntu OS
<a class="moz-txt-link-freetext" href="http://www.ubuntu.com/">http://www.ubuntu.com/</a>

</pre>
<br>
--~--~---------~--~----~------------~-------~--~----~<br>
You received this message because you are subscribed to the &quot;metakit&quot; group.
 <br> To post to this group, send email to [email protected]
 <br> To unsubscribe from this group, send email to [email protected]
 <br> For more options, visit this group at http://groups.google.com/group/metakit?hl=en <br> -~----------~----~----~----~------~----~------~--~---<br>
</body>
</html>
<br>