summaryrefslogtreecommitdiff
path: root/lib/soap/mapping/factory.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/soap/mapping/factory.rb')
-rw-r--r--lib/soap/mapping/factory.rb10
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