cannot open file if name contains accented characters

Mátyás Seress <[email protected]>
Newsgroups gmane.lisp.scheme.chicken
Message-ID <CAAQd4prG7KcB47dE-afNcycUjfAMTG2_qOpyA3ZaYmJHaML4Ww@mail.gmail.com>
Hi everyone,

I want to read input from a file that contains accented characters in its
name, and Chicken says that it can't open the file. The source code is
saved in a UTF-8 encoded text file.

---------- the test code ----------

(import (chicken io))

(define read-lines-from-file
    (lambda (file-path)
        (let ([lines '()] [file-port (open-input-file file-path)])
            (set! lines (read-lines file-port))
            (close-input-port file-port)
            lines)))

(define test-lines (read-lines-from-file "c:\\temp\\íűőúöüóéá.txt"))

---------- the shell command ----------

I use Windows, and I run the script in the Command Prompt. Before running
it, I change the code page to UTF-8 with this command:

chcp 65001

Then I run it with:

csi test.scm

---------- the output ---------

CHICKEN
(c) 2008-2019, The CHICKEN Team
(c) 2000-2007, Felix L. Winkelmann
Version 5.1.0 (rev 8e62f718)
mingw32-windows-gnu-x86 [ dload ptables ]

; loading test.scm ...
; loading c:/chicken/lib/chicken/11/chicken.io.import.so ...

Error: (open-input-file) cannot open file - No such file or directory:
"c:\\temp\\íűőúöüóéá.txt"

        Call history:

        <syntax>          [read-lines-from-file] (##core#begin (##core#set!
lines (read-lines file-port)) (close-input-port file-port) lines)
        <syntax>          [read-lines-from-file] (##core#set! lines
(read-lines file-port))
        <syntax>          [read-lines-from-file] (read-lines file-port)
        <syntax>          [read-lines-from-file] (close-input-port
file-port)
        <syntax>          [read-lines-from-file] (##core#begin lines)
        <syntax>          [read-lines-from-file] (quote ())
        <syntax>          [read-lines-from-file] (##core#quote ())
        <syntax>          [read-lines-from-file] (open-input-file file-path)
        <syntax>          (define test-lines (read-lines-from-file
"c:\\temp\\íűőúöüóéá.txt"))
        <syntax>          (##core#begin (##core#ensure-toplevel-definition
test-lines) (##core#set! test-lines (read-lines-fro...
        <syntax>          (##core#ensure-toplevel-definition test-lines)
        <syntax>          (##core#undefined)
        <syntax>          (##core#set! test-lines (read-lines-from-file
"c:\\temp\\íűőúöüóéá.txt"))
        <syntax>          (read-lines-from-file "c:\\temp\\íűőúöüóéá.txt")
        <eval>    (read-lines-from-file "c:\\temp\\íűőúöüóéá.txt")
        <eval>    [read-lines-from-file] (open-input-file file-path)    <--

If I change the file name to something that only contains ASCII characters,
then it works fine. Also, if I run the same code on a UNIX type operating
system, it works with accented characters too, only on Windows it doesn't.
What am I doing wrong?

Thanks in advance!
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.