English version
Accueil     À propos     Téléchargement     Ressources     Contactez-nous    

Ce site est rarement mis à jour. Pour les informations les plus récentes, rendez-vous sur le nouveau site OCaml à l'adresse ocaml.org.

Browse thread
8-bit characters on command line
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2010-05-14 (04:37)
From: Paul Steckler <Paul.Steckler@n...>
Subject: 8-bit characters on command line
I have an OCaml 3.11 program that prints out the arguments on the command line:

  let main =Array.iter (Printf.printf "arg = %s\n") Sys.argv

On Linux, if I provide a command line argument containing 8-bit characters,
like é (an e with an acute accent), the program above, compiled with ocamlopt
or ocamlc, prints them faithfully.

For Windows, I can compile the program above with ocamlc on Windows, or cross-compile
it with MinGW-ocaml on Linux.  In both cases, any 8-bit characters in the command
line are printed as garbage.  I've tried running the program from rxvt (a shell for
Cygwin) and Windows cmd.exe.

Why does the behavior differ?

Although it's not a particular concern to me, the OCaml interpreter handles 8-bit characters
on Linux and Windows differently.  From the earlier part of my message, you'd think that
Linux ocaml handles such characters well, and Windows ocaml, not well -- but just the
opposite holds!  In Windows, if I enter a string containing an 8-bit character, the interpreter spits
it back faithfully:

  # "é";;
  - : string = "é"

But in Linux:

  # "é";;
  - : string = "\195\169"

Why this inconsistency?

-- Paul
Paul Steckler
National ICT Australia
paul DOT steckler AT nicta.com.au

The information in this e-mail may be confidential and subject to legal professional privilege and/or copyright. National ICT Australia Limited accepts no liability for any damage caused by this email or its attachments.