cancel
Showing results for 
Search instead for 
Did you mean: 

Encoding problem in file receiver

Former Member
0 Kudos

Hi Experts,

I've got a SOAP to File Scenario (PI 7.4), I'm getting a XML message encoded as Base64 in a field from the web service, I'm using a UDF in mapping to decode an extract the XML file from the dedicated field, than use content conversion to get only the one field.

note, in the XML file it is declare as ISO-8599-8.

than I send it to file receiver adapter as type=text and encoding=ISO-8599-8.

I've also tried to write file as XML and tried using different encoding (UTF-8,ISO-8599-1, cp1255, windows-1255)

the Hebrew characters are always displayed as junk characters when trying to open the file and also in sxi_moni and RWB.

do I need to address in UDF the relevant encoding ?

what am i missing ?

Accepted Solutions (1)

Accepted Solutions (1)

RaghuVamseedhar
Active Contributor
0 Kudos

Zevik,

I think, Sender system is sending incorrect data. Please decode the Base64 here Base64 Decode and Encode - Online

Your UDF works fine


return new String(BASE64Decoder.decode(var1.getBytes()));

Input: VGVzdGluZyBIZWJyZXcgYWxwaGFiZXQgINeQ1rjXnNa216PWvteR1rXWvNeZ16og16LWtNeR1rDXqNa015k=

Output: Testing Hebrew alphabet  אָלֶף־בֵּית עִבְרִי

Please note, xml reserved characters will be escaped if they are present in data.

Input:PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktOCI/PjxLZXRlckludm9pY2U+PEhl

Ouput:&lt;?xml version=&quot;1.0&quot; encoding=&quot;iso-8859-8&quot;?&gt;&lt;KeterInvoice&gt;&lt;He (Which is <?xml version="1.0" encoding="iso-8859-8"?><KeterInvoice><He).

Former Member
0 Kudos

Hi,

Thanks for taking the time to check this, I've used the site you posted and it decodes the Hebrew characters from my file correctly, so the problem isn't with bad data from provider.

I really think that the problem is declaring the correct encoding properly in the udf.

RaghuVamseedhar
Active Contributor
0 Kudos

Zevik,

Can you please post the Base64 string (PO is receiving) here, it will help in debugging.

Former Member
0 Kudos

Sorry for the delay, I was away on vacation for a week.

this is the the string:

PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktOCI/PjxLZXRlckludm9pY2U+PEhlYWRlcj48VHJhbnNhY3Rpb25JRD48L1RyYW5zYWN0aW9uSUQ+PFZlbmRvcl9EVU5TX051bWJlcj5ERTgxMjYwMzk1ODwvVmVuZG9yX0RVTlNfTnVtYmVyPjxWZW5kb3JfVGF4Qm9va19OdW1iZXI+REU4MTI2MDM5NTg8L1ZlbmRvcl9UYXhCb29rX051bWJlcj48VmVuZG9yX05hbWU+16HXmS4g15DXmS4g16TXmS4g15DXmS48L1ZlbmRvcl9OYW1lPjxWZW5kb3JfTnVtYmVyPjgwNTIyNTkwPC9WZW5kb3JfTnVtYmVyPjxJbnZvaWNlX051bWJlcj5UZXN0T3JkZXJMaW5lczwvSW52b2ljZV9OdW1iZXI+PE1hdGNoaW5nX1B1cmNoYXNlX09yZGVyX051bWJlcj40NTAxMDQxMjM3PC9NYXRjaGluZ19QdXJjaGFzZV9PcmRlcl9OdW1iZXI+PE1hdGNoaW5nX1B1cmNoYXNlX09yZGVyX1ZlcnNpb24+PC9NYXRjaGluZ19QdXJjaGFzZV9PcmRlcl9WZXJzaW9uPjxNYXRjaGluZ19TaGlwcGluZ19Ob3RlX051bWJlcj40NTQ2NTwvTWF0Y2hpbmdfU2hpcHBpbmdfTm90ZV9OdW1iZXI+PEN1c3RvbWVyX1NoaXBwaW5nX05vdGVfTnVtYmVyPjQ1NDY1PC9DdXN0b21lcl9TaGlwcGluZ19Ob3RlX051bWJlcj48TWF0Y2hpbmdfUHJvZm9ybWFfSW52b2ljZV9OdW1iZXI+PC9NYXRjaGluZ19Qcm9mb3JtYV9JbnZvaWNlX051bWJlcj48TWF0Y2hpbmdfSW52b2ljZV9EcmFmdF9OdW1iZXI+PC9NYXRjaGluZ19JbnZvaWNlX0RyYWZ0X051bWJlcj48TWF0Y2hpbmdfQ3JlZGl0ZWRfSW52b2ljZV9OdW1iZXI+PC9NYXRjaGluZ19DcmVkaXRlZF9JbnZvaWNlX051bWJlcj48SXNfSW52b2ljZV9CYXNlZF9Pbl9PcmRlcj4xPC9Jc19JbnZvaWNlX0Jhc2VkX09uX09yZGVyPjxJc19JbnZvaWNlX0Jhc2VkX09uX1Byb2Zvcm1hPjA8L0lzX0ludm9pY2VfQmFzZWRfT25fUHJvZm9ybWE+PEludm9pY2VfWWVhcj4yMDE1PC9JbnZvaWNlX1llYXI+PFJlZmVyZW5jZV9JbnZvaWNlX051bWJlcj48L1JlZmVyZW5jZV9JbnZvaWNlX051bWJlcj48SXNzdWVfRGF0ZT4yNi8wMy8yMDE1PC9Jc3N1ZV9EYXRlPjxEZWxpdmVyeV9EYXRlPjwvRGVsaXZlcnlfRGF0ZT48Q3VzdG9tZXJfTmFtZT5KYXJkaW48L0N1c3RvbWVyX05hbWU+PEN1c3RvbWVyX0RVTlNfTnVtYmVyPk5MODAyNjU5OTI1QjAxPC9DdXN0b21lcl9EVU5TX051bWJlcj48Q3VzdG9tZXJfVmF0PjwvQ3VzdG9tZXJfVmF0PjxDdXN0b21lcl9EZXBhcnRtZW50PjwvQ3VzdG9tZXJfRGVwYXJ0bWVudD48Q3VzdG9tZXJfRnVsbF9BZGRyZXNzPjwvQ3VzdG9tZXJfRnVsbF9BZGRyZXNzPjxDdXN0b21lcl9DaXR5X05hbWU+PC9DdXN0b21lcl9DaXR5X05hbWU+PEN1c3RvbWVyX1BPX0JveD48L0N1c3RvbWVyX1BPX0JveD48Q3VzdG9tZXJfU3RhdGU+PC9DdXN0b21lcl9TdGF0ZT48Q3VzdG9tZXJfQ291bnRyeT48L0N1c3RvbWVyX0NvdW50cnk+PEN1c3RvbWVyX1ppcF9Db2RlPjwvQ3VzdG9tZXJfWmlwX0NvZGU+PEN1c3RvbWVyX1Bob25lPjwvQ3VzdG9tZXJfUGhvbmU+PEN1c3RvbWVyX0ZheD48L0N1c3RvbWVyX0ZheD48Q29udGFjdF9QZXJzb25fTmFtZT48L0NvbnRhY3RfUGVyc29uX05hbWU+PENvbnRhY3RfUGhvbmVfTnVtYmVyPjwvQ29udGFjdF9QaG9uZV9OdW1iZXI+PENvbnRhY3RfZW1haWw+PC9Db250YWN0X2VtYWlsPjxUb3RhbF9TdW1fSW5jbHVkZV9WYXRfTG9jYWxfQ3VycmVuY3k+Mjk1MjUwLjE2MDwvVG90YWxfU3VtX0luY2x1ZGVfVmF0X0xvY2FsX0N1cnJlbmN5PjxUb3RhbF9TdW1fQmVmb3JlX1ZhdF9Mb2NhbF9DdXJyZW5jeT4yNTAyMTI8L1RvdGFsX1N1bV9CZWZvcmVfVmF0X0xvY2FsX0N1cnJlbmN5PjxUb3RhbF9WYXRfTG9jYWxfQ3VycmVuY3k+NDUwMzguMTY8L1RvdGFsX1ZhdF9Mb2NhbF9DdXJyZW5jeT48VmF0X1BlcmNlbnRhZ2U+MTg8L1ZhdF9QZXJjZW50YWdlPjxUb3RhbF9TdW1fSW5jbHVkZV9WYXRfRm9yZWlnbl9DdXJyZW5jeT4yOTUyNTAuMTY8L1RvdGFsX1N1bV9JbmNsdWRlX1ZhdF9Gb3JlaWduX0N1cnJlbmN5PjxUb3RhbF9TdW1fQmVmb3JlX1ZhdF9Gb3JlaWduX0N1cnJlbmN5PjI1MDIxMjwvVG90YWxfU3VtX0JlZm9yZV9WYXRfRm9yZWlnbl9DdXJyZW5jeT48VG90YWxfVmF0X0ZvcmVpZ25fQ3VycmVuY3k+NDUwMzguMTY8L1RvdGFsX1ZhdF9Gb3JlaWduX0N1cnJlbmN5PjxUb3RhbF9EaXNjb3VudF9Mb2NhbF9DdXJyZW5jeT4wPC9Ub3RhbF9EaXNjb3VudF9Mb2NhbF9DdXJyZW5jeT48VG90YWxfRGlzY291bnRfRm9yZWlnbl9DdXJyZW5jeT4wPC9Ub3RhbF9EaXNjb3VudF9Gb3JlaWduX0N1cnJlbmN5PjxUb3RhbF9TdW1fQmVmb3JlX1ZhdF9Mb2NhbF9DdXJyZW5jeV9JbmNsdWRlX0R1c2NvdW50PjI1MDIxMjwvVG90YWxfU3VtX0JlZm9yZV9WYXRfTG9jYWxfQ3VycmVuY3lfSW5jbHVkZV9EdXNjb3VudD48VG90YWxfU3VtX0JlZm9yZV9WYXRfRm9yZWlnbl9DdXJyZW5jeV9JbmNsdWRlX0R1c2NvdW50PjI1MDIxMjwvVG90YWxfU3VtX0JlZm9yZV9WYXRfRm9yZWlnbl9DdXJyZW5jeV9JbmNsdWRlX0R1c2NvdW50PjxMb2NhbF9DdXJyZW5jeT5FVVI8L0xvY2FsX0N1cnJlbmN5PjxGb3JlaWduX0N1cnJlbmN5PkVVUjwvRm9yZWlnbl9DdXJyZW5jeT48SW52b2ljZV9UeXBlPklOVk88L0ludm9pY2VfVHlwZT48TWF0Y2hpbmdfUE9fVHlwZT48L01hdGNoaW5nX1BPX1R5cGU+PFBheW1lbnRfQ29uZGl0aW9ucz48L1BheW1lbnRfQ29uZGl0aW9ucz48RXhjaGFuZ2VfUmF0ZT4xPC9FeGNoYW5nZV9SYXRlPjxHb3Zlcm5tZW50X0ludm9pY2VfTnVtYmVyPjwvR292ZXJubWVudF9JbnZvaWNlX051bWJlcj48UmVtYXJrPjwvUmVtYXJrPjwvSGVhZGVyPjxMaW5lcz48Um93PjxJbnZvaWNlX0xpbmVfTnVtYmVyPjI8L0ludm9pY2VfTGluZV9OdW1iZXI+PE1hdGNoaW5nX1B1cmNoYXNlX09yZGVyX051bWJlcj40NTAxMDQxMjM3PC9NYXRjaGluZ19QdXJjaGFzZV9PcmRlcl9OdW1iZXI+PE1hdGNoaW5nX1B1cmNoYXNlX09yZGVyX0xpbmVfTnVtYmVyPjIwPC9NYXRjaGluZ19QdXJjaGFzZV9PcmRlcl9MaW5lX051bWJlcj48TWF0Y2hpbmdfU2hpcHBpbmdfTm90ZT40NTQ2NTwvTWF0Y2hpbmdfU2hpcHBpbmdfTm90ZT48TWF0Y2hpbmdfU2hpcHBpbmdfTm90ZV9MaW5lX051bWJlcj48L01hdGNoaW5nX1NoaXBwaW5nX05vdGVfTGluZV9OdW1iZXI+PE1hdGNoaW5nX1Byb2Zvcm1hX0ludm9pY2VfTnVtYmVyPjwvTWF0Y2hpbmdfUHJvZm9ybWFfSW52b2ljZV9OdW1iZXI+PE1hdGNoaW5nX1Byb2Zvcm1hX0ludm9pY2VfTGluZV9OdW1iZXI+PC9NYXRjaGluZ19Qcm9mb3JtYV9JbnZvaWNlX0xpbmVfTnVtYmVyPjxTdXBwbGllcl9DYXRhbG9nX051bWJlcj41NTU2NTk8L1N1cHBsaWVyX0NhdGFsb2dfTnVtYmVyPjxTdXBwbGllcl9Vbml0X09mX01lYXN1cmU+PC9TdXBwbGllcl9Vbml0X09mX01lYXN1cmU+PFN1cHBsaWVyX1F1YW50aXR5PjIwMDwvU3VwcGxpZXJfUXVhbnRpdHk+PFN1cHBsaWVyX1VuaXRfUHJpY2VfQmVmb3JlX1ZhdF9Mb2NhbF9DdXJyZW5jeT4xMDYwPC9TdXBwbGllcl9Vbml0X1ByaWNlX0JlZm9yZV9WYXRfTG9jYWxfQ3VycmVuY3k+PFN1cHBsaWVyX1VuaXRfUHJpY2VfQmVmb3JlX1ZhdF9Gb3JlaWduX0N1cnJlbmN5PjEwNjA8L1N1cHBsaWVyX1VuaXRfUHJpY2VfQmVmb3JlX1ZhdF9Gb3JlaWduX0N1cnJlbmN5PjxDdXN0b21lcl9DYXRhbG9nX051bWJlcj48L0N1c3RvbWVyX0NhdGFsb2dfTnVtYmVyPjxDdXN0b21lcl9DYXRhbG9nX0Rlc2NyaXB0aW9uPkRzIERheXRvbmEgU0wgKGluY2wga3VzcykgNzAweDM5Mng2OTNtbTwvQ3VzdG9tZXJfQ2F0YWxvZ19EZXNjcmlwdGlvbj48Q3VzdG9tZXJfVW5pdF9PZl9NZWFzdXJlPjwvQ3VzdG9tZXJfVW5pdF9PZl9NZWFzdXJlPjxDdXN0b21lcl9RdWFudGl0eT4yMDA8L0N1c3RvbWVyX1F1YW50aXR5PjxDdXN0b21lcl9Vbml0X1ByaWNlX0JlZm9yZV9WYXRfTG9jYWxfQ3VycmVuY3k+MTA2MDwvQ3VzdG9tZXJfVW5pdF9QcmljZV9CZWZvcmVfVmF0X0xvY2FsX0N1cnJlbmN5PjxDdXN0b21lcl9Vbml0X1ByaWNlX0JlZm9yZV9WYXRfRm9yZWlnbl9DdXJyZW5jeT48L0N1c3RvbWVyX1VuaXRfUHJpY2VfQmVmb3JlX1ZhdF9Gb3JlaWduX0N1cnJlbmN5PjxUb3RhbF9MaW5lX1N1bV9JbmNsdWRlX1ZhdF9Mb2NhbF9DdXJyZW5jeT4yNTAuMTY8L1RvdGFsX0xpbmVfU3VtX0luY2x1ZGVfVmF0X0xvY2FsX0N1cnJlbmN5PjxUb3RhbF9MaW5lX1N1bV9CZWZvcmVfVmF0X0xvY2FsX0N1cnJlbmN5PjIxMjwvVG90YWxfTGluZV9TdW1fQmVmb3JlX1ZhdF9Mb2NhbF9DdXJyZW5jeT48TGluZV9Ub3RhbF9WYXRfTG9jYWxfQ3VycmVuY3k+MzguMTY8L0xpbmVfVG90YWxfVmF0X0xvY2FsX0N1cnJlbmN5PjxUb3RhbF9MaW5lX1N1bV9JbmNsdWRlX1ZhdF9Gb3JlaWduX0N1cnJlbmN5PjI1MC4xNjwvVG90YWxfTGluZV9TdW1fSW5jbHVkZV9WYXRfRm9yZWlnbl9DdXJyZW5jeT48VG90YWxfTGluZV9TdW1fQmVmb3JlX1ZhdF9Gb3JlaWduX0N1cnJlbmN5PjIxMjwvVG90YWxfTGluZV9TdW1fQmVmb3JlX1ZhdF9Gb3JlaWduX0N1cnJlbmN5PjxMaW5lX1RvdGFsX1ZhdF9Gb3JlaWduX0N1cnJlbmN5PjM4LjE2PC9MaW5lX1RvdGFsX1ZhdF9Gb3JlaWduX0N1cnJlbmN5PjxMaW5lX1ZhdF9QZXJjZW50YWdlPjE4PC9MaW5lX1ZhdF9QZXJjZW50YWdlPjxMaW5lX1ZhdF9JbmRpY2F0aW9uPjwvTGluZV9WYXRfSW5kaWNhdGlvbj48TGluZV9EaXNjb3VudF9Mb2NhbF9DdXJyZW5jeT48L0xpbmVfRGlzY291bnRfTG9jYWxfQ3VycmVuY3k+PExpbmVfRGlzY291bnRfRm9yZWlnbl9jdXJyZW5jeT48L0xpbmVfRGlzY291bnRfRm9yZWlnbl9jdXJyZW5jeT48TGluZV9JbnZvaWNlX1R5cGU+PC9MaW5lX0ludm9pY2VfVHlwZT48TGluZV9EZWxpdmVyeV9EYXRlPjwvTGluZV9EZWxpdmVyeV9EYXRlPjxMaW5lX1JlbWFyaz48L0xpbmVfUmVtYXJrPjwvUm93PjxSb3c+PEludm9pY2VfTGluZV9OdW1iZXI+MTwvSW52b2ljZV9MaW5lX051bWJlcj48TWF0Y2hpbmdfUHVyY2hhc2VfT3JkZXJfTnVtYmVyPjQ1MDEwNDEyMzc8L01hdGNoaW5nX1B1cmNoYXNlX09yZGVyX051bWJlcj48TWF0Y2hpbmdfUHVyY2hhc2VfT3JkZXJfTGluZV9OdW1iZXI+MTA8L01hdGNoaW5nX1B1cmNoYXNlX09yZGVyX0xpbmVfTnVtYmVyPjxNYXRjaGluZ19TaGlwcGluZ19Ob3RlPjQ1NDY1PC9NYXRjaGluZ19TaGlwcGluZ19Ob3RlPjxNYXRjaGluZ19TaGlwcGluZ19Ob3RlX0xpbmVfTnVtYmVyPjwvTWF0Y2hpbmdfU2hpcHBpbmdfTm90ZV9MaW5lX051bWJlcj48TWF0Y2hpbmdfUHJvZm9ybWFfSW52b2ljZV9OdW1iZXI+PC9NYXRjaGluZ19Qcm9mb3JtYV9JbnZvaWNlX051bWJlcj48TWF0Y2hpbmdfUHJvZm9ybWFfSW52b2ljZV9MaW5lX051bWJlcj48L01hdGNoaW5nX1Byb2Zvcm1hX0ludm9pY2VfTGluZV9OdW1iZXI+PFN1cHBsaWVyX0NhdGFsb2dfTnVtYmVyPjU1NTA4NjwvU3VwcGxpZXJfQ2F0YWxvZ19OdW1iZXI+PFN1cHBsaWVyX1VuaXRfT2ZfTWVhc3VyZT48L1N1cHBsaWVyX1VuaXRfT2ZfTWVhc3VyZT48U3VwcGxpZXJfUXVhbnRpdHk+NTAwPC9TdXBwbGllcl9RdWFudGl0eT48U3VwcGxpZXJfVW5pdF9QcmljZV9CZWZvcmVfVmF0X0xvY2FsX0N1cnJlbmN5PjUwMDwvU3VwcGxpZXJfVW5pdF9QcmljZV9CZWZvcmVfVmF0X0xvY2FsX0N1cnJlbmN5PjxTdXBwbGllcl9Vbml0X1ByaWNlX0JlZm9yZV9WYXRfRm9yZWlnbl9DdXJyZW5jeT41MDA8L1N1cHBsaWVyX1VuaXRfUHJpY2VfQmVmb3JlX1ZhdF9Gb3JlaWduX0N1cnJlbmN5PjxDdXN0b21lcl9DYXRhbG9nX051bWJlcj48L0N1c3RvbWVyX0NhdGFsb2dfTnVtYmVyPjxDdXN0b21lcl9DYXRhbG9nX0Rlc2NyaXB0aW9uPkRTIERheXRvbmEgRnVsbCBjb2xvciBpbmNsIDcwMHgzOTJ4NjkzbW08L0N1c3RvbWVyX0NhdGFsb2dfRGVzY3JpcHRpb24+PEN1c3RvbWVyX1VuaXRfT2ZfTWVhc3VyZT48L0N1c3RvbWVyX1VuaXRfT2ZfTWVhc3VyZT48Q3VzdG9tZXJfUXVhbnRpdHk+NTAwPC9DdXN0b21lcl9RdWFudGl0eT48Q3VzdG9tZXJfVW5pdF9QcmljZV9CZWZvcmVfVmF0X0xvY2FsX0N1cnJlbmN5PjUwMDwvQ3VzdG9tZXJfVW5pdF9QcmljZV9CZWZvcmVfVmF0X0xvY2FsX0N1cnJlbmN5PjxDdXN0b21lcl9Vbml0X1ByaWNlX0JlZm9yZV9WYXRfRm9yZWlnbl9DdXJyZW5jeT48L0N1c3RvbWVyX1VuaXRfUHJpY2VfQmVmb3JlX1ZhdF9Gb3JlaWduX0N1cnJlbmN5PjxUb3RhbF9MaW5lX1N1bV9JbmNsdWRlX1ZhdF9Mb2NhbF9DdXJyZW5jeT4yOTUwMDA8L1RvdGFsX0xpbmVfU3VtX0luY2x1ZGVfVmF0X0xvY2FsX0N1cnJlbmN5PjxUb3RhbF9MaW5lX1N1bV9CZWZvcmVfVmF0X0xvY2FsX0N1cnJlbmN5PjI1MDAwMDwvVG90YWxfTGluZV9TdW1fQmVmb3JlX1ZhdF9Mb2NhbF9DdXJyZW5jeT48TGluZV9Ub3RhbF9WYXRfTG9jYWxfQ3VycmVuY3k+NDUwMDA8L0xpbmVfVG90YWxfVmF0X0xvY2FsX0N1cnJlbmN5PjxUb3RhbF9MaW5lX1N1bV9JbmNsdWRlX1ZhdF9Gb3JlaWduX0N1cnJlbmN5PjI5NTAwMDwvVG90YWxfTGluZV9TdW1fSW5jbHVkZV9WYXRfRm9yZWlnbl9DdXJyZW5jeT48VG90YWxfTGluZV9TdW1fQmVmb3JlX1ZhdF9Gb3JlaWduX0N1cnJlbmN5PjI1MDAwMDwvVG90YWxfTGluZV9TdW1fQmVmb3JlX1ZhdF9Gb3JlaWduX0N1cnJlbmN5PjxMaW5lX1RvdGFsX1ZhdF9Gb3JlaWduX0N1cnJlbmN5PjQ1MDAwPC9MaW5lX1RvdGFsX1ZhdF9Gb3JlaWduX0N1cnJlbmN5PjxMaW5lX1ZhdF9QZXJjZW50YWdlPjE4PC9MaW5lX1ZhdF9QZXJjZW50YWdlPjxMaW5lX1ZhdF9JbmRpY2F0aW9uPjwvTGluZV9WYXRfSW5kaWNhdGlvbj48TGluZV9EaXNjb3VudF9Mb2NhbF9DdXJyZW5jeT48L0xpbmVfRGlzY291bnRfTG9jYWxfQ3VycmVuY3k+PExpbmVfRGlzY291bnRfRm9yZWlnbl9jdXJyZW5jeT48L0xpbmVfRGlzY291bnRfRm9yZWlnbl9jdXJyZW5jeT48TGluZV9JbnZvaWNlX1R5cGU+PC9MaW5lX0ludm9pY2VfVHlwZT48TGluZV9EZWxpdmVyeV9EYXRlPjwvTGluZV9EZWxpdmVyeV9EYXRlPjxMaW5lX1JlbWFyaz48L0xpbmVfUmVtYXJrPjwvUm93PjwvTGluZXM+PC9LZXRlckludm9pY2U+

RaghuVamseedhar
Active Contributor
0 Kudos

Zevik,

Your UDF works fine. Please check my earlier response.

Note: XML reserved characters <, >, &, ', " will be escaped as &gt;, &lt;, &amp;...

Former Member
0 Kudos

Raghu,

when i run it through PI non of the characters are in Hebrew, can it do with my PI version ? I'm using 7.4

RaghuVamseedhar
Active Contributor
0 Kudos

Zevik,

I do not think PI/PO version is the issue. I am on PO 7.4. Please check if you are able to see Hebrew character when target file is opened in IE or Chrome (name the target file as .xml or .html).

Former Member
0 Kudos

not able to see Hebrew anywhere.

maybe it's the import class i used ?

stefan_grube
Active Contributor
0 Kudos

I see that the encoding declaration of the XML inside the base64 string is iso-8859-8, however the encoding of the hebrew characters is obviously UTF-8.

But one thing I noticed as well: The UDF escapes the < an > characters, so your result is no valid XML, but plain text. I think you cannot reach your goal with UDF at all.


As i wrote before, I recommend using a Java mapping. Here in forum are many guys who would assist you for writing a Java mapping for your purpose. 

former_member184720
Active Contributor
0 Kudos

>>> not able to see Hebrew anywhere. maybe it's the import class i used ?

I don't think so. If you really want to validate if the decoded string has any Hebrew char, extend your UDF like this.

String output ="";

try {

output = new String(BASE64Decoder.decode(var1.getBytes()), "UTF-8");

}

catch (Exception e) {

return e.getMessage();

}

Pattern p = Pattern.compile("\\p{InHebrew}");

Matcher m = p.matcher(output);

if (m.find()){

return output;

}

else {

return "not found";

}

Answers (8)

Answers (8)

Former Member
0 Kudos

Hi experts,

Thank you for all your help, I will think about it and post again if needed.

Former Member
0 Kudos

Hi Experts,

So iv'e tried to change the base64 decoder udf to address the encoding issue with no success.

Hebrew is in Junk characters already in mapping test tab and even in display queue, and also in MONI.


I've checked with supplier of the web service and the Hebrew is OK on there side in the system and there logs.

Any ideas ?

stefan_grube
Active Contributor
0 Kudos

An XML file is automatically converted to UTF-8 by PI mapping, so when you decode your base64, you need to tranform the content to UTF-8 as well. You have to do it in your UDF.

what is your UDF code?

stefan_grube
Active Contributor
0 Kudos

When I read again your request, I recommend using a Java mapping instead of a UDF.

Former Member
0 Kudos

Hi Stefan,

I prefer not to use Java mapping in this case, the udf code that i use and works for decoding base64 is:

return new String(BASE64Decoder.decode(var1.getBytes()));

the xml that im working on is:

FileBuffer is the field that i'm decoding.

stefan_grube
Active Contributor
0 Kudos

My first idea was, to use new String( ... , "ISO-8599-8");

However I saw in your file, that encoding is mentioned as UTF-8, so I would assume that this works without code page declaration.

Try new String ( ... , "UTF-8")

Former Member
0 Kudos

I've tried this:

return new String(BASE64Decoder.decode(var1.getBytes()), "ISO-8599-8");

and i get an error while compiling :

stefan_grube
Active Contributor
0 Kudos

try {

return new String(BASE64Decoder.decode(var1.getBytes()), "UTF-8");

} catch (Exception e) { return e.getMessage(); }



Former Member
0 Kudos

no error, but all it just returns the encoding name instead of the XML itself.

Former Member
0 Kudos

Hi Experts,

Thank you all for your answers, You all raised good questions.

1. UDF for decoding Base64 field is working properly.

2. The Hebrew characters in the XML are displayed as junk characters already in MONI after the base64 decoding.

3. I didn't check how it looks in mapping test tab or even in display queue, so ill check that as well.

4. I didn't try to change the encoding using message transformation bean in the receiver file adapter.


5. i read the article (How To… Work with Character Encodings in Process Integration) and it says there that for XML files you need to Use the adapter module 'XmlAnonymizerBean', so ill try that too.

I will try it on Sunday and let you all know.

markangelo_dihiansan
Active Contributor
0 Kudos

Hi Zevik,

Once you have extracted the XML via UDF, is it displaying junk even in mapping test tab or even in display queue?

Regards,

Mark

RaghuVamseedhar
Active Contributor
0 Kudos

Zevik,

First target should be properly viewing characters in sxmb_moni.

Is UDF working fine?

Try

byte[] b = new sun.misc.BASE64Decoder().decodeBuffer("input");  OR

byte[] b = javax.xml.blind.DatatypeConverter().decodeBuffer("input");

Once characters are properly displayed in moni. Then, you can write target file in UTF-8 (recomanded) or ISO 8859-8 or cp1255.

You can change prolog of XML after message mapping, using XSLT or Java mapping, but not required. FYI Link1, Link2.

nabendu_sen
Active Contributor
0 Kudos

Hi Zevik,

Please find below the UDF and solution provided by to Decode Base64 for a Single field:

==================================================================================================================

If you are using the sap util libraries i.e. aii_utilxi_misc.jar - import this in imported archive  - import/mention this in the Archives Used tab in the screenshot below.  In the Import Instructions mention - com.sap.aii.utilxi.base64.api.Base64 and create a udf as shown below (add exception handling).

This udf can then be used in your mapping for decoding :

If you want to use apache libraries - Go to the functions tab and add  the import -org.apache.commons.codec.binary.Base64.

Create a udf in similar lines  - where encoded is the input field value :

byte[] decoded = Base64.decodeBase64(encoded);

String decodedout = String(decoded);

return  decodedout;  


===============================================================================================================================

Please find the actual thread :

Regards,

Nabendu.

Former Member
0 Kudos

Hi Zevik

Try to change the encoding using message transformation bean in the receiver file adapter.

Transform.Class = com.sap.aii.messaging.adapter.Conversion

Transform.ContentType = text/xml;charset=ISO-8599-8

Thanks,

Indrajit

iaki_vila
Active Contributor
0 Kudos

Hi Zevik,

The encodings chosen by you seems to be right. Have you check the java code for conversion in this document http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/502991a2-45d9-2910-d99f-8aba5d79f...?

Regards.