Gauche > Archives > 2014/02/24

2014/02/24 00:16:21 UTC齊藤
#
Gauche の場合は write-u8 を使えばいいんじゃないでしょうか。
#
(use binary.io)
(write-u8 #xf7)
2014/02/24 00:23:15 UTC齊藤
#
make_str というよりは、パーサの段階での解釈じゃないかな。
2014/02/24 00:35:15 UTCshiro
#
>wasao ユニコード配列として扱いたい場合はu8vectorを使うのが推奨です。書き出すにはwrite-blockを使います。
#
間違い。s/ユニコード配列/オクテット配列/
#
utf-8以外のエンコーディングで文字列を扱いたい(例えばiso-8859-1のようなラテン文字)という目的の場合、原則としては、Gaucheの中での文字列は内部エンコーディング(デフォルトutf-8)で統一しておいて、入出力時に変換することになります。
#
osh> (use gauche.charconv)
#<undef>
gosh> (with-output-conversion (current-output-port) (^[] (display "\xf7;")))
÷;#<undef>
gosh> (with-output-conversion (current-output-port) (^[] (display "\xf7;")) :encoding "iso8859-1")
;#<undef>
#
あ、消えちゃった。最後の例では\xf7がそのまま出てるんですが。
#
あとうっかり0.9.3.3で例を走らせたのでセミコロンが出力に出てますが、0.9.4からはr7rs準拠になるので\xf7; で一文字分のエスケープ表記になります。
#
一応、異なるエンコーディングのバイト列を文字列として扱うこともできるんですがあまり推奨しません。
#
>higepon 当面はYCのメンタリングに専念じゃないですかね。運営とメンターの両方をやりづらくなってきたってことでしょうから。
#
>mhayashi1120 私自身が64bit Windows環境を持ってなかったので試してなかったんですが、多分同じfixでオッケーだと思います。今考えたらX1 CarbonのWindowsで試せるのか。Windows8の使い方が分からなくて滅多にWindowsでブートしたことがなかった。
2014/02/24 01:35:44 UTCwasao
#
ありがとうございます。write-block、忘れていました。
2014/02/24 01:39:18 UTCshiro
#
R7RSだとbytevectorおよびwrite-bytevectorですね。
2014/02/24 01:44:23 UTCwasao
#
> write-u8
#
binary.io、使ってみます。
2014/02/24 01:50:55 UTCwasao
#
1年前に使ったことあったみたいです。 https://gist.github.com/wasao/5273651#file-xor-scm-L4
2014/02/24 10:16:44 UTCmhayashi1120
#
ありがとうございます。手元で直して一ヶ月ぐらい普通に動いてたのですが、 asm コードの修正のところで勘違いしてたのでもうちょっと調べてみます。が、分からなかったら聞きにきます。