[#45036] WindowsでMySQL/Rubyを使おうとするとmysql.so (LoadError) — adgjmptw@...

多田と申します。

22 messages 2008/06/12
[#45038] Re: WindowsでMySQL/Rubyを使おうとするとmysql.so (LoadError) — rubikitch@... 2008/06/12

From: adgjmptw@super-r.net

[#45040] Re: WindowsでMySQL/Rubyを使おうとするとmysql.so (LoadError) — adgjmptw@... 2008/06/12

> (3)ロードパスに C:/usr/local/lib/ruby/site_ruby/1.8/i386-msvcrt が

[#45042] Re: WindowsでMySQL/Rubyを使おうとするとmysql.so (LoadError) — rubikitch@... 2008/06/12

From: adgjmptw@super-r.net

[#45045] Re: WindowsでMySQL/Rubyを使おうとするとmysql.so (LoadError) — adgjmptw@... 2008/06/13

原因と思われるものがわかりました。

[#45052] Re: WindowsでMySQL/Rubyを使おうとするとmysql.so (LoadError) — とみたまさひろ <tommy@...> 2008/06/13

とみたです。

[#45099] Ruby 1.9.0/1.8.7/1.8.6/1.8.5 new releases (Security Fix) — Urabe Shyouhei <shyouhei@...>

Hi all.

20 messages 2008/06/20
[#45100] Re: Ruby 1.9.0/1.8.7/1.8.6/1.8.5 new releases (Security Fix) — Urabe Shyouhei <shyouhei@...> 2008/06/20

卜部です。

[#45102] Re: Ruby 1.9.0/1.8.7/1.8.6/1.8.5 new releases (Security Fix) — 植田 裕之 <ueda@...> 2008/06/20

植田と申します。

[#45106] Re: Ruby 1.9.0/1.8.7/1.8.6/1.8.5 new releases (Security Fix) — akira yamada / やまだあきら <akira@...> 2008/06/21

植田 裕之 さんは書きました:

[#45112] ソース:インストール:MacOSX10.3.9 — 上間 健 <tntn@...>

./configure --prefix=/usr/local --with-readline-dir=/opt/local

46 messages 2008/06/22
[#45113] Re: ソース:インストール:MacOSX10.3.9 — 上間 健 <tntn@...> 2008/06/22

質問をゆるやかに変更

[#45114] Re: ソース:インストール:MacOSX10.3.9 — wei <weimayamiew@...> 2008/06/23

今晩は、ヱイと申します。

[#45122] Re: ソース:インストール:MacOSX10.3.9 — 上間 健 <tntn@...> 2008/06/24

ヱイ さん

[#45131] Re: ソース:インストール:MacOSX10.3.9 — Hidetoshi NAGAI <nagai@...> 2008/06/24

Ruby/Tk メンテナの永井@知能.九工大です.

[#45143] Re: ソース:インストール:MacOSX10.3.9 — Ryutaro Amano <wn9r-amn@...> 2008/06/26

天野です。

[#45146] Re: ソース:インストール:MacOSX10.3.9 — Hidetoshi NAGAI <nagai@...> 2008/06/26

永井@知能.九工大です.

[#45149] Re: ソース:インストール:MacOSX10.3.9 — Ryutaro Amano <wn9r-amn@...> 2008/06/27

天野です。

[#45152] Re: ソース:インストール:MacOSX10.3.9 — Hidetoshi NAGAI <nagai@...> 2008/06/29

永井@知能.九工大です.

[#45184] Re: ソース:インストール:MacOSX10.3.9 — Ryutaro Amano <wn9r-amn@...> 2008/07/03

天野です。RES遅くなり申し訳ありません。

[#45186] Re: ソース:インストール:MacOSX10.3.9 — Hidetoshi NAGAI <nagai@...> 2008/07/04

永井@知能.九工大です.

[#45192] Re: ソース:インストール:MacOSX10.3.9 — wei <weimayamiew@...> 2008/07/04

ヱイです。

[#45193] Re: ソース:インストール:MacOSX10.3.9 — Hidetoshi NAGAI <nagai@...> 2008/07/04

永井@知能.九工大です.

[#45157] MySQLに書き込む前にSJISのエスケープ文字を入れる処理ってどうされてますか? — adgjmptw@...

多田です。

12 messages 2008/06/29
[#45158] Re: MySQLに書き込む前にSJISのエスケープ文字を入れる処理ってどうされてますか? — rubikitch@... 2008/06/29

From: adgjmptw@super-r.net

[#45159] Re: MySQLに書き込む前にSJISのエスケープ文字を入れる処理ってどうされてますか? — adgjmptw@... 2008/06/29

> str.tosjis # Shift_JISに変換(入力文字コードは推測)

[ruby-list:44997] Re: yamlとencoding

From: "Yutaka Kanemoto" <kinpoco@...>
Date: 2008-06-03 17:55:56 UTC
List: ruby-list #44997
金本と申します.

返事が大変遅くなり申し訳ございません.
いただいたパッチなのですが、こちらの意図がうまくお伝え
できなかったようで、期待する動作になりませんでした.
つまりまだjoin時にArgumentErrorになってしまいました。

ただ、ちょっとヒントをいただけた気がしたので自分で調べてみました.

要望としては以下のようなスクリプトがすんなり終わることです.
% cat y.rb
# -*- coding: utf-8 -*-

require 'yaml'
str = "nanika: なにか"
print "str -> #{str.encoding}\n"
y = YAML.load(str)
a=["たとえば"]
y.each {|k,v| a << k << v }
a.each {|i| print "#{i}: #{i.encoding}\n" }
print a.join, "\n"

現時点では以下のようにArgumentErrorになります。
% ruby -v y.rb
ruby 1.9.0 (2008-06-03 revision 0) [x86_64-linux]
str -> UTF-8
たとえば: UTF-8
nanika: ASCII-8BIT
なにか: ASCII-8BIT
y.rb:10:in `join': append incompatible encoding strings: UTF-8 and
ASCII-8BIT (ArgumentError)
        from y.rb:10:in `<main>'

YAMLをパースしたあとに、encodingがすべてASCII-8BITになっていたので、
個々の文字列を作るときに何もしていないのかなと思い調査しました.

下にパッチを添付します。
これで上記のスクリプトの出力は以下のようになります。

% ruby -v y.rb
ruby 1.9.0 (2008-06-03 revision 0) [x86_64-linux]
str -> UTF-8
たとえば: UTF-8
nanika: UTF-8
なにか: UTF-8
たとえばnanikaなにか

このパッチではload後にUS-ASCIIな文字列もUTF-8になってしまいますが、
毎度チェックするのもどうかと思ったので、
とりあえずそのままにしてあります。
個人的にはこれで目的が達成されるのですが、
実際の実装はぜんぜんこれでなくてかまわないとして、
このような動作は提案として受け入れていただけますでしょうか?

よろしくお願いいたします。
Index: ext/syck/rubyext.c
===================================================================
--- ext/syck/rubyext.c  (リビジョン 16799)
+++ ext/syck/rubyext.c  (作業コピー)
@@ -11,6 +11,7 @@
 #include "syck.h"
 #include <sys/types.h>
 #include <time.h>
+#include "ruby/encoding.h"

 typedef struct RVALUE {
     union {
@@ -84,6 +85,7 @@
     VALUE proc;
     VALUE resolver;
     int taint;
+    rb_encoding *original_encoding;
 };

 struct emitter_xtra {
@@ -610,7 +612,9 @@
      * Create node,
      */
     obj = rb_funcall( resolver, s_node_import, 1, Data_Wrap_Struct(
cNode, NULL, NULL, n ) );
-
+    if ( TYPE(obj) == T_STRING ) {
+      rb_enc_set_index( obj, rb_enc_to_index( bonus->original_encoding ) );
+    }
     /*
      * ID already set, let's alter the symbol table to accept the new object
      */
@@ -821,6 +825,7 @@
     bonus->taint = syck_parser_assign_io(parser, &port);
     bonus->data = rb_hash_new();
     bonus->resolver = rb_attr_get( self, s_resolver );
+    bonus->original_encoding = rb_enc_get( port );
     if ( NIL_P( proc ) ) bonus->proc = 0;
     else                 bonus->proc = proc;

@@ -848,6 +853,7 @@
     bonus->taint = syck_parser_assign_io(parser, &port);
     bonus->resolver = rb_attr_get( self, s_resolver );
     bonus->proc = 0;
+    bonus->original_encoding = rb_enc_get( port );

     while ( 1 )
     {

-- 
Yutaka KANEMOTO
http://d.hatena.ne.jp/kinpoco/

In This Thread