IMに不具合

Re: IMに不具合(解決)

par Xpyoda Janus,
Nombre de réponses : 0

濃ゆい話ついでに...(まだやるのか...私...ww)

opensim リポジトリの bin/XMLRPC.dll を過去のバージョンも含めてすべて取り出してみました。

% ls 
XMLRPC.dll.2007-06-27_646bbbc84b8010e0dacbeed5342cdb045f46cc49
XMLRPC.dll.2007-07-05_8bdbdf48c7896a7cb47d49544ab528a508e557c9
XMLRPC.dll.2007-07-08_24ed79ba122d8f24d29ea1a32e0de63033abaf6e
XMLRPC.dll.2007-07-08_c578d0c37d620d0d1dafc5df8a6902a2be6edb8e
XMLRPC.dll.2007-07_08_c617cf7d84341f025c2b19560c7885102105a419
XMLRPC.dll.2011-04-27_5e3893ca5c8c985bf9b2a1e1dbc94d48a4eb3e96
XMLRPC.dll.2018-01-12_98f79cf7353dda79e235ed76058f8ea990c1f9e1
XMLRPC.dll.2018-09-17_a5d6a394ef8838230aeeb4f1721bd40ee0b302a5

 

これを 次のshスクリプトで monodisで逆アセンブルし、UTF8,ASCII どちらのエンコーディングを使っているのかしらべたところ次のような結果になりました(単純すぎるやりかたですけど、まあ推測はできる)。

% cat monodis.sh
for f in XMLRPC.dll.*
do
    echo "---  $f  ---"
    monodis $f | grep -E '(UTF8|ASCII)'
done

% sh monodis.sh
---  XMLRPC.dll.2007-06-27_646bbbc84b8010e0dacbeed5342cdb045f46cc49  ---
        IL_0001:  newobj instance void class [mscorlib]System.Text.ASCIIEncoding::'.ctor'()
        IL_0001:  newobj instance void class [mscorlib]System.Text.ASCIIEncoding::'.ctor'()
---  XMLRPC.dll.2007-07-05_8bdbdf48c7896a7cb47d49544ab528a508e557c9  ---
                class [mscorlib]System.Text.UTF8Encoding        V_3,
          IL_000e:  call class [mscorlib]System.Text.Encoding class [mscorlib]System.Text.Encoding::get_UTF8()
          IL_0040:  newobj instance void class [mscorlib]System.Text.UTF8Encoding::'.ctor'()
        IL_0008:  newobj instance void class [mscorlib]System.Text.UTF8Encoding::'.ctor'()
        IL_0008:  newobj instance void class [mscorlib]System.Text.UTF8Encoding::'.ctor'()
        IL_002b:  call class [mscorlib]System.Text.Encoding class [mscorlib]System.Text.Encoding::get_UTF8()
        IL_0041:  call class [mscorlib]System.Text.Encoding class [mscorlib]System.Text.Encoding::get_UTF8()
---  XMLRPC.dll.2007-07-08_24ed79ba122d8f24d29ea1a32e0de63033abaf6e  ---
                class [mscorlib]System.Text.UTF8Encoding        V_3,
          IL_000c:  call class [mscorlib]System.Text.Encoding class [mscorlib]System.Text.Encoding::get_UTF8()
          IL_003a:  newobj instance void class [mscorlib]System.Text.UTF8Encoding::'.ctor'()
        IL_0001:  newobj instance void class [mscorlib]System.Text.UTF8Encoding::'.ctor'()
        IL_0001:  newobj instance void class [mscorlib]System.Text.UTF8Encoding::'.ctor'()
        IL_0014:  call class [mscorlib]System.Text.Encoding class [mscorlib]System.Text.Encoding::get_UTF8()
        IL_002a:  call class [mscorlib]System.Text.Encoding class [mscorlib]System.Text.Encoding::get_UTF8()
---  XMLRPC.dll.2007-07-08_c578d0c37d620d0d1dafc5df8a6902a2be6edb8e  ---
                class [mscorlib]System.Text.UTF8Encoding        V_3,
          IL_003c:  newobj instance void class [mscorlib]System.Text.UTF8Encoding::'.ctor'()
        IL_0008:  newobj instance void class [mscorlib]System.Text.UTF8Encoding::'.ctor'()
        IL_0008:  newobj instance void class [mscorlib]System.Text.UTF8Encoding::'.ctor'()
---  XMLRPC.dll.2007-07_08_c617cf7d84341f025c2b19560c7885102105a419  ---
                class [mscorlib]System.Text.UTF8Encoding        V_3,
          IL_0040:  newobj instance void class [mscorlib]System.Text.UTF8Encoding::'.ctor'()
        IL_0008:  newobj instance void class [mscorlib]System.Text.UTF8Encoding::'.ctor'()
        IL_0008:  newobj instance void class [mscorlib]System.Text.UTF8Encoding::'.ctor'()
---  XMLRPC.dll.2011-04-27_5e3893ca5c8c985bf9b2a1e1dbc94d48a4eb3e96  ---
                class [mscorlib]System.Text.UTF8Encoding        V_3,
          IL_003c:  newobj instance void class [mscorlib]System.Text.UTF8Encoding::'.ctor'()
        IL_0008:  newobj instance void class [mscorlib]System.Text.UTF8Encoding::'.ctor'()
        IL_0008:  newobj instance void class [mscorlib]System.Text.UTF8Encoding::'.ctor'()
---  XMLRPC.dll.2018-01-12_98f79cf7353dda79e235ed76058f8ea990c1f9e1  ---
        IL_0001:  newobj instance void class [mscorlib]System.Text.ASCIIEncoding::'.ctor'()
        IL_0001:  newobj instance void class [mscorlib]System.Text.ASCIIEncoding::'.ctor'()
---  XMLRPC.dll.2018-09-17_a5d6a394ef8838230aeeb4f1721bd40ee0b302a5  ---
        IL_0001:  newobj instance void class [mscorlib]System.Text.UTF8Encoding::'.ctor'()
        IL_0001:  newobj instance void class [mscorlib]System.Text.UTF8Encoding::'.ctor'()
        IL_0001:  newobj instance void class [mscorlib]System.Text.UTF8Encoding::'.ctor'()

 

これをみると、つぎのようにデフォルトエンコーディングが途中で変わっています。

2007-06-27                  ASCIIEncoding
2007-07-05 ~ 2011-04-27    UTF8Encoding
2018-01-12                  ASCIIEncoding
2018-09-17                  UTF8Encoding

git log のコメントをみると、2018-01-12から 以前のソースコードとは違うものを使い始めていて、ASCIIEncodingに巻き戻ってしまっています。コミッターもUbitUmarov <ajlduarte@sapo.pt>さんに変わっています。

JOGridのIMの文字化けも、これに影響されてしまったんだと思います。