[#32182] 汚染された文字列の eval — 堀川 久 <vzw00011@...>

こんにちは。

18 messages 2001/11/03
[#32183] Re: 汚染された文字列の eval — matz@... (Yukihiro Matsumoto) 2001/11/03

まつもと ゆきひろです

[#32205] assert and assert_equal — Masaki Suketa <masaki.suketa@...>

助田です。

15 messages 2001/11/05

[#32263] fastcgi.rb and cgi.rb — 岡田 潤 <yun@...>

ゆんです。

37 messages 2001/11/08
[#32273] Re: fastcgi.rb and cgi.rb — Shugo Maeda <shugo@...> 2001/11/09

前田です。

[#32280] Re: fastcgi.rb and cgi.rb — Wakou Aoyama <wakou@...> 2001/11/09

青山です。

[#32308] Re: fastcgi.rb and cgi.rb — TAKAHASHI Masayoshi <maki@...> 2001/11/13

高橋征義です。

[#32359] Re: fastcgi.rb and cgi.rb — MoonWolf <moonwolf@...> 2001/11/15

> うーん、あんまり文字列一般が備えるべき機能ではないと

[#32377] Re: fastcgi.rb and cgi.rb — TAKAHASHI Masayoshi <maki@...> 2001/11/16

高橋征義です。

[#32380] Re: fastcgi.rb and cgi.rb — MoonWolf <moonwolf@...> 2001/11/16

> でも、128から255までの場合、ISO-8859-1を使っている人で、

[#32329] PalmOS for Ruby — Toru MITANI <toru_m@...2.dion.ne.jp>

94 messages 2001/11/14
[#32330] Re: PalmOS for Ruby — rubikitch <rubikitch@...> 2001/11/14

From: Toru MITANI <toru_m@h2.dion.ne.jp>

[#32332] Re: PalmOS for Ruby — Toru MITANI <toru_m@...2.dion.ne.jp> 2001/11/14

[#32346] Re: PalmOS for Ruby — rubikitch <rubikitch@...> 2001/11/15

From: Toru MITANI <toru_m@h2.dion.ne.jp>

[#32349] Re: PalmOS for Ruby — Toru MITANI <toru_m@...2.dion.ne.jp> 2001/11/15

[#32352] Re: PalmOS for Ruby — rubikitch <rubikitch@...> 2001/11/15

From: Toru MITANI <toru_m@h2.dion.ne.jp>

[#32354] Re: PalmOS for Ruby — Toru MITANI <toru_m@...2.dion.ne.jp> 2001/11/15

[#32357] Re: PalmOS for Ruby — rubikitch <rubikitch@...> 2001/11/15

From: Toru MITANI <toru_m@h2.dion.ne.jp>

[#32363] Re: PalmOS for Ruby — Toru MITANI <toru_m@...2.dion.ne.jp> 2001/11/15

[#32392] Re: PalmOS for Ruby — rubikitch <rubikitch@...> 2001/11/17

From: Toru MITANI <toru_m@h2.dion.ne.jp>

[#32401] Re: PalmOS for Ruby — Toru MITANI <toru_m@...2.dion.ne.jp> 2001/11/17

[#32402] Ruby Reference Manual for PalmOS — rubikitch <rubikitch@...> 2001/11/17

From: Toru MITANI <toru_m@h2.dion.ne.jp>

[#32408] Re: Ruby Reference Manual for PalmOS — Toru MITANI <toru_m@...2.dion.ne.jp> 2001/11/18

[#32423] Re: Ruby Reference Manual for PalmOS — rubikitch <rubikitch@...> 2001/11/19

From: Toru MITANI <toru_m@h2.dion.ne.jp>

[#32426] Re: Ruby Reference Manual for PalmOS — Toru MITANI <toru_m@...2.dion.ne.jp> 2001/11/19

[#32445] Re: Ruby Reference Manual for PalmOS — rubikitch <rubikitch@...> 2001/11/20

From: Toru MITANI <toru_m@h2.dion.ne.jp>

[#32428] Re: Ruby Reference Manual for PalmOS — Takahiro Kambe <taca@...> 2001/11/19

In message <20011119230955.E9F7.TORU_M@h2.dion.ne.jp>

[#32432] Re: Ruby Reference Manual for PalmOS — Toru MITANI <toru_m@...2.dion.ne.jp> 2001/11/19

[#32356] Re: PalmOS for Ruby — "Masatake E. Hori" <eddie@...> 2001/11/15

ほり@筑波大学といいます

[#32358] Re: PalmOS for Ruby — rubikitch <rubikitch@...> 2001/11/15

From: "Masatake E. Hori" <eddie@luft.geo.tsukuba.ac.jp>

[#32440] shibu-rug — KANDA Daisuke <MAP2303@...>

40 messages 2001/11/20
[#32451] Re: shibu-rug — rubikitch <rubikitch@...> 2001/11/20

From: KANDA Daisuke <MAP2303@mapletown.net>

[#32455] Re: shibu-rug — KANDA Daisuke <MAP2303@...> 2001/11/20

[#32545] Re: shibu-rug — KANDA Daisuke <MAP2303@...> 2001/11/26

[#32558] Re: shibu-rug — KANDA Daisuke <MAP2303@...> 2001/11/27

[#32623] Re: shibu-rug — TAKAHASHI Masayoshi <maki@...> 2001/11/29

高橋征義です。

[#32658] Re: shibu-rug — KANDA Daisuke <MAP2303@...> 2001/11/30

[#32661] Re: shibu-rug — TAKAHASHI Masayoshi <maki@...> 2001/11/30

高橋征義です。

[#32694] sandstorm (Re: Re: shibu-rug) — Dai <MAP2303@...> 2001/12/01

[#32716] RUG 用ドメインなど (Re: shibu-rug) — rubiben <ozaki@...> 2001/12/03

 rubiben です。

[#32465] Ruby for PalmOS に対する熱い想い — Toru MITANI <toru_m@...2.dion.ne.jp>

80 messages 2001/11/20
[#32519] Re: Ruby for PalmOS に対する熱い想い — "Nibu, Mitsunori." <nyu@...> 2001/11/23

newです.

[#32527] Re: Ruby for PalmOS に対する熱い想い — rubikitch <rubikitch@...> 2001/11/23

From: "Nibu, Mitsunori." <nyu@nk.rim.or.jp>

[#32533] Re: Ruby for PalmOS に対する熱い想い — "丹生 光則 Nibu,Mitsunori." <nyu@...> 2001/11/24

newです.

[#32537] Re: Ruby for PalmOS に対する熱い想い — rubikitch <rubikitch@...> 2001/11/25

From: "丹生 光則 Nibu,Mitsunori." <nyu@nk.rim.or.jp>

[#32542] Re: Ruby for PalmOS に対する熱い想い — "丹生 光則 Nibu,Mitsunori." <nibu@...> 2001/11/26

newです.

[#32550] Re: Ruby for PalmOS に対する熱い想い — rubikitch <rubikitch@...> 2001/11/26

From: "丹生 光則 Nibu,Mitsunori." <nibu@tec.osaka.jip.co.jp>

[#32557] Re: Ruby for PalmOS に対する熱い想い — "丹生 光則 Nibu,Mitsunori." <nibu@...> 2001/11/27

newです.

[#32566] Re: Ruby for PalmOS に対する熱い想い — Nakamura Akifumi <BXQ04723@...> 2001/11/27

[#32567] Linux カーネル 2.0 での make — Victor Alexander Debuque <victor@...> 2001/11/27

初めまして。オーストラリア在住のビクターと申します。ハンドルではなく本名です。(^^;)

[#32563] Re: Ruby for PalmOS に対する熱い想い — Toru MITANI <toru_m@...2.dion.ne.jp> 2001/11/27

[#32598] Re: Ruby for PalmOS に対する熱い想い — rubikitch <rubikitch@...> 2001/11/28

From: Toru MITANI <toru_m@h2.dion.ne.jp>

[#32609] Editor macro by Ruby (Re: Ruby for PalmOS に対する熱い想い) — shukaku@... 2001/11/29

At Wed, 28 Nov 2001 20:52:49 +0900,

[#32473] File.expand_path(" 一覧表 .xsl") — Take_tk <ggb03124@...>

File.expand_path で「表」の文字が化けたのですが、最新版ではOKでしょう

13 messages 2001/11/21

[#32551] ソースの readme をもう少し詳しく — "Mitsuo Igarashi" <mitsu5@...>

ソース中のREADMEをもう少し説明を詳しくしていただければ、

15 messages 2001/11/26

[#32578] cygwin database Ruby Install MySQL PostgreSQL other... MS-Access(blase) — "Inoue" <inoue@...>

井上です。

21 messages 2001/11/28

[#32632] Re: Ruby for PalmOS に対する熱い想い — Nagai T <idonagai@...>

29 messages 2001/11/29
[#32665] blade on Palm — sinara@... 2001/11/30

原です。

[#32666] Re: blade on Palm — "U.Nakamura" <usa@...> 2001/11/30

こんにちは、なかむら(う)です。

[#32669] ruby-talk.length > ruby-list.length (Re: Re: blade on Palm) — maili31s@... (SugHimsi == SUGIHARA Hiroshi) 2001/11/30

すぎむし%Rubyちゃんポータルも見直ししないと…

[#32691] Re: ruby-talk.length > ruby-list.length (Re: Re: blade on Palm) — sinara@... 2001/12/01

原です。

[#33608] Re: ruby-talk.length > ruby-list.length — nobu.nakada@... 2002/01/29

なかだです。

[#33614] Re: ruby-talk.length > ruby-list.length — Minero Aoki <aamine@...> 2002/01/29

あおきです。

[ruby-list:32625] XMLParser(expat) bug with UTF-16LE & CR+LF

From: TAKAHASHI Masayoshi <maki@...>
Date: 2001-11-29 10:23:36 UTC
List: ruby-list #32625
高橋征義です。

先に要旨を書いておきます。

・XMLParserでUTF-16LE&CR+LFの文書をファイルオブジェクトの形で
  parseすると落ちる(原因はexpat?)。
・その前に、XMLParserの「getsメソッドがあるオブジェクトの場合、
  行ごとに読み込んでparseする」という仕様は、素朴に行なうと
  UTF-16 Little-Endian の場合に(16bitの)コードユニットを分断して
  しまうことになるが、それは構わないのか構うのか?  構うなら
  どうするべきか?

とりわけ後者の方の意見を聞いてみたいです。

                           □

では、本文です。

xmlparserを使ってUTF-16の文書をparseしようとすると、
Segmentation faultになってRubyごと落ちることがある
ようです(Ruby 1.6.5 + XMLParser 0.6.1 + expat 1.95.2)。

これは、

  require 'xmlparser'
  
  class FXMLParser < XMLParser; end

  ## UTF-16なXML文書をtmp.xmlにいったん書き込む
  File.open("tmp.xml","w"){|f|
    f.write("\377\376<\000a\000>\000\r\000\n\000"+
  	  "<\000/\000a\000>\000\r\000\n\000")
  }
  
  ## ファイルオブジェクトにしてparseする
  File.open("tmp.xml"){|f|
    x = FXMLParser.new()
    x.parse(f)
  }

というように、Fileオブジェクトを渡してparseさせようとした際に、
ファイルの中身がUTF-16(LE)で改行がCR+LFだった場合に発生するよう
です。

UTF-16(LE)の文書の場合、改行は「\r \000 \n \000」といったように
なるわけですが、この最後の1回前、「(..略..) > \000 \r \000 \n」
という部分まで読みこみ(まだ最後の「\000」は読み込んでいない)、
ここまでをparseするべくXML_Parseを呼ぶと、そこで失敗するようです。
# というわけで、どうやらexpatのせいのような気が (--; 

                           □

とはいえ、現在のXMLParserの「getsを使って改行(\n)まで読み込む」
という仕様がちょっと美しくないかも、という気もします。なぜなら、
UTF-16(LE)の場合、1コードユニットの半分だけを読み込む、という
ことになってしまうためです。

ちなみにPerlのExpat.xsとPythonのpyexpat.cでは、ファイルから
読み込む場合は XML_ParseBufferを使い、固定バイト数だけreadで
読み込んでます。当然ながらバッファのバイト数は2の倍数なわけで、
UTF-16が途中でぶち切れるようなことはなさそうです。

もっとも、Rubyの場合、直接ファイルを読み込むのではなく、
あくまで「getsメソッドを持っているオブジェクトは、ファイルで
あるかどうかかかわらず、getsメソッドを使って読み込みながら
parseする」ということをやっているわけで、PerlやPythonと
同じようにはできないですし、するべきでもないように思います。

それでも、getsではなくreadを使うことにして、行ごとではなく
固定バイト数ごとにparseする、というのはアリかもしれません。
……とはいえ、これもいまいちの解決法ではありますが。たまたま
expatが対応している文字コードではうまくいく、というだけの
話ですし。


というわけで、どうしたもんでしょうね?
# やっぱそもそもexpatをなんとかするべきなんだから、Rubyは
# 今のままでよい?  それとも?

高橋征義 (TAKAHASHI Masayoshi)       Email:maki@inac.co.jp

In This Thread

Prev Next