diff options
Diffstat (limited to 'lib/soap/mapping/factory.rb')
-rw-r--r-- | lib/soap/mapping/factory.rb | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/lib/soap/mapping/factory.rb b/lib/soap/mapping/factory.rb index 13dffc2dd0..978b303b3d 100644 --- a/lib/soap/mapping/factory.rb +++ b/lib/soap/mapping/factory.rb @@ -87,10 +87,11 @@ class StringFactory_ < Factory return nil end begin - unless XSD::Charset.is_ces(obj, $KCODE) - return nil + unless XSD::Charset.is_ces(obj, Thread.current[:SOAPExternalCES]) + return nil end - encoded = XSD::Charset.encoding_conv(obj, $KCODE, XSD::Charset.encoding) + encoded = XSD::Charset.encoding_conv(obj, + Thread.current[:SOAPExternalCES], XSD::Charset.encoding) soap_obj = soap_class.new(encoded) rescue XSD::ValueSpaceError return nil @@ -101,7 +102,8 @@ class StringFactory_ < Factory def soap2obj(obj_class, node, info, map) obj = Mapping.create_empty_object(obj_class) - decoded = XSD::Charset.encoding_conv(node.data, XSD::Charset.encoding, $KCODE) + decoded = XSD::Charset.encoding_conv(node.data, XSD::Charset.encoding, + Thread.current[:SOAPExternalCES]) obj.replace(decoded) mark_unmarshalled_obj(node, obj) return true, obj |