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!