[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[opensoap-users-ja:0055] Re: Encoding について



坂東@ISRCです。

kusunoki@tecinfosys.co.jp (楠夏生) write:
:皆さんこんにちわ、楠です。

楠さん、こんにちわ。

:非常に初歩的な質問で心苦しいのですが、OpenSOAPEnvelopeCreateMB()関数を使用して
:エンベロープを生成したときにxmlタグに自動生成されるエンコードの属性は、どの
:ようにして決定されるのでしょうか。

OpenSOAPEnvelope で、文字エンコードが確定するのは、
シリアライズされる時になっています。ですから、
OpenSOAPEnvelopeGetCharEncodingString の第二引数で指定するか、
あるいは、OpenSOAPTransportSetCharset の第二引数で指定すると
いいと思います。

:私の環境(RedHatLinux7.2+Apatch+OpenSOAP Server)ですと必ず "EUC-JP" が属性とし
:て設定されています。

上記の引数を NULL にしたり、OpenSOAPTransportSetCharset を
呼び出していなかったりすると、実行時の文字セットを使用するように
なっています。

:これを例えば "UTF-8" などに変更したい場合は、どのようにすれば宜しいのでしょうか?
:OpenSOAPに付属していたサンプルを参考に、OpenSOAPEnvelopeGetCharEncodingString()
:からOpenSOAPByteArrayPtrに取り出して、OpenSOAPEnvelopeCreateCharEncoding()あたり
:を試してみたのですが、なかなか思うようにならずに四苦八苦です。
:
:以下、現在巡りにめぐってたどり着いているコードです。
:----------------------------------------------------------------------------------
:OpenSOAPEnvelopeCreateMB("1.1", NULL, &request);
:		・
:		・
:		・
:{// Encoding変換
:	OpenSOAPByteArrayPtr _pArr = NULL;
:	OpenSOAPByteArrayCreate(&_pArr);
:	OpenSOAPEnvelopeGetCharEncodingString(request, "UTF-8", _pArr);

この時点で _pArr には、文字エンコードが UTF-8 の SOAP Message が格納
されていますが、

:	OpenSOAPEnvelopeRelease(request);
:	OpenSOAPEnvelopeCreateCharEncoding("UTF-8", _pArr, &request);

ここで、文字エンコードに無関係な状態の OpenSOAPEnvelope が生成されます。

:	OpenSOAPByteArrayRelease(&_pStr);
:}
:----------------------------------------------------------------------------------
:
:どうか良い知恵をお授けください。お願いします。

参考になりましたでしょうか?