unofficial mirror of guile-user@gnu.org 
 help / color / mirror / Atom feed
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>



  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).