[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);
:}
:----------------------------------------------------------------------------------
:
:どうか良い知恵をお授けください。お願いします。
参考になりましたでしょうか?