XPCE process invocation and character encoding
[email protected] Fri, 27 Jun 2014 20:15:48 -0430
| Newsgroups | gmane.comp.ai.prolog.swi |
|---|---|
| Message-ID | <[email protected]> |
Dear All,
I am writing a XPCE based GUI for swish-e which I will release as free
software, but I am having problems passing latin characters to a process
using this code (from Jan's XPCE userguide):
call_unix(Utl, Args, Output) :-
NewTerm =.. [process, Utl | Args],
new(P, NewTerm),
%send(P, environment, 'LANG', 'es_VE.UTF-8'),
%send(P, environment, 'LANGUAGE', 'es_VE:es'),
send(P, use_tty, @off),
new(OS, string),
send(P, record_separator, @nil),
send(P, input_message, message(OS, append, @arg1)),
send(P, open),
send(P, wait),
pce_string_to_list(OS, Output),
send(P, done),
send(OS, done).
The problem can be seen in the following traces of the tests:
test_swish1 :-
shell('swish-e -w "Asociación de Profesores del Instituto Pedagógico de
Caracas UPEL"', L).
which uses the shell directly, and
test_swish2 :-
call_unix('swish-e', ['-w' ,'Asociación de Profesores del Instituto
Pedagógico de Caracas UPEL'], Output), name(A, Output), writeln(A).
the first gives the right answer:
?- cea:test_swish1.
# SWISH format: 2.4.7
# Search words: Asociación de Profesores del Instituto Pedagógico de
Caracas UPEL
# Removed stopwords:
# Number of hits: 11
# Search time: 0,073 seconds
# Run time: 0,092 seconds
1000 ./pdfs/v8n25/articulo14.pdf "articulo14.pdf" 334273
946 ./pdfs/v13n46/articulo28.pdf "articulo28.pdf" 734363
920 ./pdfs/v11n38/articulo18.pdf "articulo18.pdf" 512974
907 ./pdfs/v10n32/articulo21.pdf "articulo21.pdf" 373669
901 ./pdfs/v5n13/articulo5-13-5.pdf "articulo5-13-5.pdf" 193489
898 ./pdfs/v13n46/articulo10.pdf "articulo10.pdf" 1349930
888 ./pdfs/v12n42/articulo16.pdf "articulo16.pdf" 1030090
863 ./pdfs/v13n44/articulo17.pdf "articulo17.pdf" 415354
799 ./pdfs/v13n46/articulo3.pdf "articulo3.pdf" 1036807
739 ./pdfs/v13n44/articulo14.pdf "articulo14.pdf" 400571
504 ./pdfs/v4n11/articulo4-11-14d.pdf "articulo4-11-14d.pdf" 27258
.
true.
but the second does not:
?- cea:test_swish2.
# SWISH format: 2.4.7
# Search words: Asociación de Profesores del Instituto Pedagógico de
Caracas UPEL
# Removed stopwords:
err: no results
.
true.
I am pretty sure the problem is that the process is not receiving those
"ó" with the proper encoding. But I don't see how to change that
behaviour. As you can see in the comments in the first code, I tried
setting the locale environment variables. I didn't work.
Any hint?
Best regards,
Jacinto
--
Jacinto A. Dávila.
http://webdelprofesor.ula.ve/ingenieria/jacinto/
Universidad de los Andes, Venezuela.