From: Alex Vong <alexvong1995@gmail.com>
To: Park SungMin <byulparan_eng@icloud.com>
Cc: guile-user@gnu.org
Subject: Re: filename(CJK utf8) problem on OSX.
Date: Mon, 28 Mar 2016 12:59:07 +0800 [thread overview]
Message-ID: <874mbr5hb8.fsf@gmail.com> (raw)
In-Reply-To: <D96207EF-D334-4742-90BF-0A48CC64A4A4@icloud.com> (Park SungMin's message of "Mon, 28 Mar 2016 10:21:46 +0900")
Park SungMin <byulparan_eng@icloud.com> writes:
> follow code….. I just test openfile(CJK filename).
> "open-file" and "call-with-input-file" are raise error. so I test use low C(Posix) API, then run ok!
> I don’t know is it bug? or option problem?
>
>
> (use-modules (rnrs io ports)
> (rnrs bytevectors)
> (system foreign)
> (ice-9 rdelim))
>
> (fluid-set! %default-port-encoding "utf-8")
> (set-port-encoding! (current-output-port) "utf-8")
> (set-port-encoding! (current-input-port) "utf-8")
>
> (define filename "/Users/byul/Desktop/사진.gif")
>
> (define my-open-file
> (lambda (filename)
> (let* ((fd ((pointer->procedure
> int
> (dynamic-func "open" (dynamic-link))
> (list '* int))
> (bytevector->pointer
> (string->utf8 filename))
> O_RDONLY)))
> (when (= fd -1)
> (throw 'can't-find-file))
> (fdes->inport fd))))
>
> (define port (my-open-file filename))
>
> (get-bytevector-n port 10) ;; OK. I get bytevector.
>
> ;;but….
> (file-exists? filename) ;; #f
> (open-file filename "r") ; ERROR: In procedure open-file: No such file or directory: "/Users/byul/Desktop/사진.gif"
I cannot reproduce it on GNU/Linux. Perhaps others know what's going
wrong. For now, you could try setting port encoding to "UTF-8" instead
of "utf-8". Also, I remember OS X ships an ancient version of libiconv,
maybe you can try installing the latest version.
(use-modules (rnrs io ports)
(rnrs bytevectors)
(system foreign)
(ice-9 rdelim))
(fluid-set! %default-port-encoding "utf-8")
(set-port-encoding! (current-output-port) "utf-8")
(set-port-encoding! (current-input-port) "utf-8")
(define filename "/home/alexvong1995/사진.gif")
(system* "touch" filename) ;; create the file if not exist
;;; $1 = 0
(define my-open-file
(lambda (filename)
(let* ((fd ((pointer->procedure
int
(dynamic-func "open" (dynamic-link))
(list '* int))
(bytevector->pointer
(string->utf8 filename))
O_RDONLY)))
(when (= fd -1)
(throw 'can't-find-file))
(fdes->inport fd))))
(define port (my-open-file filename))
(get-bytevector-n port 10)
;;; $2 = #<eof>
(file-exists? filename)
;;; $3 = #t
(open-file filename "r")
;;; $4 = #<input: /home/alexvong1995/사진.gif 10>
next prev parent reply other threads:[~2016-03-28 4:59 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-28 1:21 filename(CJK utf8) problem on OSX Park SungMin
2016-03-28 4:59 ` Alex Vong [this message]
2016-03-28 5:35 ` tomas
2016-03-28 15:07 ` Eli Zaretskii
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/guile/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=874mbr5hb8.fsf@gmail.com \
--to=alexvong1995@gmail.com \
--cc=byulparan_eng@icloud.com \
--cc=guile-user@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).