[#47766] Hashイテレーション中の新規キー追加 — masa <masap.hat@...>
畠山です。
10 messages
2011/01/20
[#47768] Re: Hashイテレーション中の新規キー追加
— Satoshi GUNJI <gunjisatoshi@...>
2011/01/21
郡司と申します。
[#47769] Re: Hashイテレーション中の新規キー追加
— masa <masap.hat@...>
2011/01/21
GyRCSCs7MyRHJDkhIxsoQgoKGyRCJF4kRCRiJEgkNSRzISI3NDtKJDUkcyEiJCpKVjt2JCIkaiQs
[#47780] Ruby1.9.2 と RDEについて — eiichi_maekawa@...
9 messages
2011/01/26
[#47781] Re: Ruby1.9.2 と RDEについて
— Koutarou Tanaka <from.kyushu.island@...>
2011/01/26
=1B$BEDCf$H?=3D$7$^$9!#=1B(B
[#47789] [ANN] ytl 0.0.2 リリース — "Miura Hideki" <m-72@...6.so-net.ne.jp>
三浦と申します
1 message
2011/01/28
[#47790] [].join.encoding # => #<Encoding:ASCII-8BIT> — "5.5" <5.5@...>
5.5 です。
11 messages
2011/01/29
[#47792] Re: [].join.encoding # => #<Encoding:ASCII-8BIT>
— "NARUSE, Yui" <naruse@...>
2011/01/29
成瀬です。
[#47798] Re: [].join.encoding # => #<Encoding:ASCII-8BIT>
— "5.5" <5.5@...>
2011/01/31
5.5 です。
[#47799] Re: [].join.encoding # => #<Encoding:ASCII-8BIT>
— "Shota Fukumori (sora_h)" <sorah@...>
2011/01/31
sora_hです。
[#47800] Re: [].join.encoding # => #<Encoding:ASCII-8BIT>
— "KISHIMOTO, Makoto" <ksmakoto@...4u.or.jp>
2011/01/31
きしもとです
[#47801] Re: [].join.encoding # => #<Encoding:ASCII-8BIT>
— "NARUSE, Yui" <naruse@...>
2011/01/31
成瀬です。
[#47794] [ANN] Ruby-GNOME2 0.90.6 — Kouhei Sutou <kou@...>
須藤です。
7 messages
2011/01/30
[ruby-list:47798] Re: [].join.encoding # => #<Encoding:ASCII-8BIT>
From:
"5.5" <5.5@...>
Date:
2011-01-31 06:09:55 UTC
List:
ruby-list #47798
5.5 です。
>> [].join.encoding # => #<Encoding:ASCII-8BIT>
>>
>> Array#join は,典型的には文字の列を返してほしいので US-ASCII のほ
>> うが良さそうに思うのですが,なぜ ASCII-8BIT なのでしょうか。
成瀬さん:
> これは Ruby 側のバグですね、r30721 で修正しました。
分かりました。ありがとうございます。
>> これに気づいたのは,空配列を join したものを sqlite3 でデータベー
>> スに書き込んだときに,文字列ではない変なものが書き込まれてしまっ
>> たからです。
>>
>> str1="".encode("US-ASCII")
>> str2="".encode("ASCII-8BIT")
>
> ここはString#encode ではなく、String#force_encoding を使うべきです。
"".force_encoding("ASCII-8BIT") と "".encode("ASCII-8BIT") は
違うのでしょうか?
>> require 'sqlite3'
>> DB=SQLite3::Database.new "hogehoge.sqlite"
>> DB.execute "CREATE TABLE words (word VARCHAR(255))"
>> DB.execute "INSERT INTO words (word) VALUES (?)", str1
>> DB.execute "INSERT INTO words (word) VALUES (?)", str2
>>
>> 上記のコードで,二つめのレコードには,謎のバイト列(?)が入り
>> ます。Firefox の SQLite Manager で見ると,「X''」のように見えます。
>>
>> これは,SQLite3::Datababase に ASCII-8BIT な文字列を渡すのが悪い
>> のか,sqlite3 の動作が不適当なのか,どちらでしょうか。
>
> で、こっちは sqlite3-ruby のバグに見えるんですが、手元で再現しない気がする。
sqlite3 ライブラリーの動作はどうやら正常のようでした。お騒がせし
ました。
異常だと思ったのは ASCII-8BIT の空文字列を書き込んだデータベース
を Firefox のアドオン SQLiteManager でブラウズしたときに,該当フ
ィールドの表示色が他と違っていて,
X''
のように表示されていたからでした。
どうもバイナリーデータのときに色が変わって表示されるようです。
また,"abc".force_encoding("ASCII-8BIT") を書き込んでみたところ,
X'616263'
と表示されたので,文字化けしているのではなく,バイナリーデータが
そのように表示されるということのようでした。
また,sqlite3 ライブラリーで該当フィールドを読み込んでみたところ,
ちゃんと元と同じエンコーディングおよびバイト列の String オブジェ
クトが返りました。