* displaying UTF8 characters in and out of a script (guile 2.0.5)
@ 2012-12-16 19:22 msematman
2012-12-16 20:04 ` David Pirotte
0 siblings, 1 reply; 7+ messages in thread
From: msematman @ 2012-12-16 19:22 UTC (permalink / raw)
To: guile-user
Dear all,
(display "Ćićolina") from the interactive session with the guile
interpreter correctly writes
Ćićolina to the standard output.
However, the same command in a script:
#!/usr/bin/guile \
-s
#!
(display "Ćićolina")
writes this out: ?i?olina
Obviously, there is something wrong with the output of UTF8 characters
in the case of the guile script.
In contrast, a similar bash script on my system (Debian Wheezy
GNU\Linux):
#!/bin/sh
echo "Ćićolina"
writes out the correct output.
This indicates that there is probably nothing wrong with my locale
setting.
If anybody has any clue what actually went wrong , please let me know.
Cheers
--
msematman@myopera.com
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: displaying UTF8 characters in and out of a script (guile 2.0.5)
2012-12-16 19:22 displaying UTF8 characters in and out of a script (guile 2.0.5) msematman
@ 2012-12-16 20:04 ` David Pirotte
2012-12-16 20:31 ` Mark H Weaver
0 siblings, 1 reply; 7+ messages in thread
From: David Pirotte @ 2012-12-16 20:04 UTC (permalink / raw)
To: msematman; +Cc: guile-user
Hello,
> However, the same command in a script:
>
> #!/usr/bin/guile \
> -s
> #!
> (display "Ćićolina")
>
> writes this out: ?i?olina
you need to set the port encoding first [for further info see section '6.14.1 Ports'
of the manual]:
#!/bin/sh
# -*- mode: scheme; coding: utf-8 -*-
exec guile -e main -s $0 "$@"
!#
(define (main args)
(let ((port (current-output-port)))
(set-port-encoding! port "utf-8")
(display "Ćićolina\n" port)))
Cheers,
David
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: displaying UTF8 characters in and out of a script (guile 2.0.5)
2012-12-16 20:04 ` David Pirotte
@ 2012-12-16 20:31 ` Mark H Weaver
2012-12-17 12:18 ` msematman
2013-01-13 11:02 ` Andy Wingo
0 siblings, 2 replies; 7+ messages in thread
From: Mark H Weaver @ 2012-12-16 20:31 UTC (permalink / raw)
To: msematman; +Cc: guile-user, David Pirotte
David Pirotte <david@altosw.be> writes:
>> However, the same command in a script:
>>
>> #!/usr/bin/guile \
>> -s
>> #!
>> (display "Ćićolina")
>>
>> writes this out: ?i?olina
>
> you need to set the port encoding first [for further info see section '6.14.1 Ports'
> of the manual]:
Unfortunately that is only a partial solution (it changes the encoding
of the current-output-port only, not for anything else), and it assumes
that the user wants UTF-8 output.
A more comprehensive solution is to put this:
(setlocale LC_ALL "")
at the beginning of the script, which will set the locale according to
the user's settings (as specified by the environment variables). This
is what Guile does when starting an interactive session, and what most
other interactive programs and scripting languages do as well.
Also, since your script contains non-ASCII characters, you should place
a coding declaration in the file so that Guile will know what encoding
to use when reading it. If your script is in UTF-8, then put this in
the first 500 characters of the file:
;;; coding: utf-8
For more details, see:
http://www.gnu.org/software/guile/manual/html_node/Character-Encoding-of-Source-Files.html
If you do these things, then your script should work properly even when
run by a user who has configured a non-UTF-8 locale.
Regards,
Mark
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: displaying UTF8 characters in and out of a script (guile 2.0.5)
2012-12-16 20:31 ` Mark H Weaver
@ 2012-12-17 12:18 ` msematman
2013-01-13 11:02 ` Andy Wingo
1 sibling, 0 replies; 7+ messages in thread
From: msematman @ 2012-12-17 12:18 UTC (permalink / raw)
To: Mark H Weaver; +Cc: guile-user, David Pirotte
On Sun, Dec 16, 2012, at 09:31 PM, Mark H Weaver wrote:
> David Pirotte <david@altosw.be> writes:
>
> >> However, the same command in a script:
> >>
> >> #!/usr/bin/guile \
> >> -s
> >> #!
> >> (display "Ćićolina")
> >>
> >> writes this out: ?i?olina
> >
> > you need to set the port encoding first [for further info see section '6.14.1 Ports'
> > of the manual]:
>
> Unfortunately that is only a partial solution (it changes the encoding
> of the current-output-port only, not for anything else), and it assumes
> that the user wants UTF-8 output.
>
> A more comprehensive solution is to put this:
>
> (setlocale LC_ALL "")
>
> at the beginning of the script, which will set the locale according to
> the user's settings (as specified by the environment variables). This
> is what Guile does when starting an interactive session, and what most
> other interactive programs and scripting languages do as well.
>
> Also, since your script contains non-ASCII characters, you should place
> a coding declaration in the file so that Guile will know what encoding
> to use when reading it. If your script is in UTF-8, then put this in
> the first 500 characters of the file:
>
> ;;; coding: utf-8
>
> For more details, see:
>
> http://www.gnu.org/software/guile/manual/html_node/Character-Encoding-of-Source-Files.html
>
> If you do these things, then your script should work properly even when
> run by a user who has configured a non-UTF-8 locale.
>
> Regards,
> Mark
David, Mark,
Thanks for the detailed explanation, it works now.
Cheers
--
msematman@myopera.com
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: displaying UTF8 characters in and out of a script (guile 2.0.5)
2012-12-16 20:31 ` Mark H Weaver
2012-12-17 12:18 ` msematman
@ 2013-01-13 11:02 ` Andy Wingo
2013-01-13 18:12 ` Mark H Weaver
2013-01-13 22:09 ` Ludovic Courtès
1 sibling, 2 replies; 7+ messages in thread
From: Andy Wingo @ 2013-01-13 11:02 UTC (permalink / raw)
To: Mark H Weaver; +Cc: guile-user, David Pirotte
On Sun 16 Dec 2012 21:31, Mark H Weaver <mhw@netris.org> writes:
> Also, since your script contains non-ASCII characters, you should place
> a coding declaration in the file so that Guile will know what encoding
> to use when reading it. If your script is in UTF-8, then put this in
> the first 500 characters of the file:
>
> ;;; coding: utf-8
I think the default is utf-8 now, correct?
Cheers,
Andy
--
http://wingolog.org/
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: displaying UTF8 characters in and out of a script (guile 2.0.5)
2013-01-13 11:02 ` Andy Wingo
@ 2013-01-13 18:12 ` Mark H Weaver
2013-01-13 22:09 ` Ludovic Courtès
1 sibling, 0 replies; 7+ messages in thread
From: Mark H Weaver @ 2013-01-13 18:12 UTC (permalink / raw)
To: Andy Wingo; +Cc: guile-user, David Pirotte
Andy Wingo <wingo@pobox.com> writes:
> On Sun 16 Dec 2012 21:31, Mark H Weaver <mhw@netris.org> writes:
>
>> Also, since your script contains non-ASCII characters, you should place
>> a coding declaration in the file so that Guile will know what encoding
>> to use when reading it. If your script is in UTF-8, then put this in
>> the first 500 characters of the file:
>>
>> ;;; coding: utf-8
>
> I think the default is utf-8 now, correct?
Indeed, you are correct. I did not know that!
Thanks,
Mark
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: displaying UTF8 characters in and out of a script (guile 2.0.5)
2013-01-13 11:02 ` Andy Wingo
2013-01-13 18:12 ` Mark H Weaver
@ 2013-01-13 22:09 ` Ludovic Courtès
1 sibling, 0 replies; 7+ messages in thread
From: Ludovic Courtès @ 2013-01-13 22:09 UTC (permalink / raw)
To: guile-user
Andy Wingo <wingo@pobox.com> skribis:
> On Sun 16 Dec 2012 21:31, Mark H Weaver <mhw@netris.org> writes:
>
>> Also, since your script contains non-ASCII characters, you should place
>> a coding declaration in the file so that Guile will know what encoding
>> to use when reading it. If your script is in UTF-8, then put this in
>> the first 500 characters of the file:
>>
>> ;;; coding: utf-8
>
> I think the default is utf-8 now, correct?
Yes. I just noticed that it’s only stealthily mentioned under
“Compilation”:
Each FILE is assumed to be UTF-8-encoded, unless it contains a
coding declaration as recognized by `file-encoding' (*note
Character Encoding of Source Files::).
Ludo’.
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2013-01-13 22:09 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-12-16 19:22 displaying UTF8 characters in and out of a script (guile 2.0.5) msematman
2012-12-16 20:04 ` David Pirotte
2012-12-16 20:31 ` Mark H Weaver
2012-12-17 12:18 ` msematman
2013-01-13 11:02 ` Andy Wingo
2013-01-13 18:12 ` Mark H Weaver
2013-01-13 22:09 ` Ludovic Courtès
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).