<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>question Re: NiFi ExecuteScript Processor: error using string in python  with special characters in Support Questions</title>
    <link>https://community.cloudera.com/t5/Support-Questions/NiFi-ExecuteScript-Processor-error-using-string-in-python/m-p/159450#M121839</link>
    <description>&lt;P&gt;Hi &lt;A rel="user" href="https://community.cloudera.com/users/13723/chrisherssens.html" nodeid="13723"&gt;@chris herssens&lt;/A&gt;,&lt;/P&gt;&lt;P&gt;I think it should work without the bytearray in the outputStream.write()&lt;/P&gt;&lt;P&gt;In the jython repl (just downloaded jython jar and ran the following command):&lt;/P&gt;&lt;PRE&gt;java -jar jython-standalone-2.7.0.jar&lt;/PRE&gt;&lt;P&gt;I was able to write a python encoded latin-1 string to an output stream and use the result to construct a Java string that matched the input:&lt;/P&gt;&lt;PRE&gt;&amp;gt;&amp;gt;&amp;gt; from java.io import ByteArrayOutputStream
&amp;gt;&amp;gt;&amp;gt; os = ByteArrayOutputStream()
&amp;gt;&amp;gt;&amp;gt; text = u'abcdé'
&amp;gt;&amp;gt;&amp;gt; os.write(text.encode('latin-1'))
&amp;gt;&amp;gt;&amp;gt; from java.lang import String
&amp;gt;&amp;gt;&amp;gt; String(os.toByteArray(), 'ISO-8859-1')
abcdé
&lt;/PRE&gt;</description>
    <pubDate>Fri, 03 Feb 2017 22:35:04 GMT</pubDate>
    <dc:creator>brosander</dc:creator>
    <dc:date>2017-02-03T22:35:04Z</dc:date>
    <item>
      <title>NiFi ExecuteScript Processor: error using string in python  with special characters</title>
      <link>https://community.cloudera.com/t5/Support-Questions/NiFi-ExecuteScript-Processor-error-using-string-in-python/m-p/159449#M121838</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;I try to use the executeScript Processor with python for converting strings with special characters like é .  For encoding I use latin-1.  The script is :&lt;/P&gt;&lt;PRE&gt;text = IOUtils.toString(inputStream, StandardCharsets.ISO_8859_1)
....
outputStream.write(bytearray(out.encode('latin-1')))
&lt;/PRE&gt;&lt;P&gt;using this I get the follow error: &lt;/P&gt;&lt;P&gt; org.apache.nifi.processor.exception.ProcessException: javax.script.ScriptException: TypeError: write(): 1st arg can't be coerced to int, byte[] in &amp;lt;script&amp;gt; at line number 33&lt;/P&gt;&lt;P&gt;if I loop over the bytearray :&lt;/P&gt;&lt;PRE&gt;text = IOUtils.toString(inputStream, StandardCharsets.ISO_8859_1)
....
out = bytearray(out.encode('latin-1'))
for o in out :
   outputStream.write(o)&lt;/PRE&gt;&lt;P&gt;I don't get this error.&lt;/P&gt;&lt;P&gt;Thanks for your help&lt;/P&gt;&lt;P&gt;Chris&lt;/P&gt;</description>
      <pubDate>Fri, 03 Feb 2017 18:06:41 GMT</pubDate>
      <guid>https://community.cloudera.com/t5/Support-Questions/NiFi-ExecuteScript-Processor-error-using-string-in-python/m-p/159449#M121838</guid>
      <dc:creator>chris_herssens</dc:creator>
      <dc:date>2017-02-03T18:06:41Z</dc:date>
    </item>
    <item>
      <title>Re: NiFi ExecuteScript Processor: error using string in python  with special characters</title>
      <link>https://community.cloudera.com/t5/Support-Questions/NiFi-ExecuteScript-Processor-error-using-string-in-python/m-p/159450#M121839</link>
      <description>&lt;P&gt;Hi &lt;A rel="user" href="https://community.cloudera.com/users/13723/chrisherssens.html" nodeid="13723"&gt;@chris herssens&lt;/A&gt;,&lt;/P&gt;&lt;P&gt;I think it should work without the bytearray in the outputStream.write()&lt;/P&gt;&lt;P&gt;In the jython repl (just downloaded jython jar and ran the following command):&lt;/P&gt;&lt;PRE&gt;java -jar jython-standalone-2.7.0.jar&lt;/PRE&gt;&lt;P&gt;I was able to write a python encoded latin-1 string to an output stream and use the result to construct a Java string that matched the input:&lt;/P&gt;&lt;PRE&gt;&amp;gt;&amp;gt;&amp;gt; from java.io import ByteArrayOutputStream
&amp;gt;&amp;gt;&amp;gt; os = ByteArrayOutputStream()
&amp;gt;&amp;gt;&amp;gt; text = u'abcdé'
&amp;gt;&amp;gt;&amp;gt; os.write(text.encode('latin-1'))
&amp;gt;&amp;gt;&amp;gt; from java.lang import String
&amp;gt;&amp;gt;&amp;gt; String(os.toByteArray(), 'ISO-8859-1')
abcdé
&lt;/PRE&gt;</description>
      <pubDate>Fri, 03 Feb 2017 22:35:04 GMT</pubDate>
      <guid>https://community.cloudera.com/t5/Support-Questions/NiFi-ExecuteScript-Processor-error-using-string-in-python/m-p/159450#M121839</guid>
      <dc:creator>brosander</dc:creator>
      <dc:date>2017-02-03T22:35:04Z</dc:date>
    </item>
    <item>
      <title>Re: NiFi ExecuteScript Processor: error using string in python  with special characters</title>
      <link>https://community.cloudera.com/t5/Support-Questions/NiFi-ExecuteScript-Processor-error-using-string-in-python/m-p/159451#M121840</link>
      <description>&lt;P&gt;Correct, the encode() method will return a bytearray already.&lt;/P&gt;</description>
      <pubDate>Fri, 03 Feb 2017 22:53:23 GMT</pubDate>
      <guid>https://community.cloudera.com/t5/Support-Questions/NiFi-ExecuteScript-Processor-error-using-string-in-python/m-p/159451#M121840</guid>
      <dc:creator>mburgess</dc:creator>
      <dc:date>2017-02-03T22:53:23Z</dc:date>
    </item>
    <item>
      <title>Re: NiFi ExecuteScript Processor: error using string in python  with special characters</title>
      <link>https://community.cloudera.com/t5/Support-Questions/NiFi-ExecuteScript-Processor-error-using-string-in-python/m-p/159452#M121841</link>
      <description>&lt;P&gt;Hi, i try this exemple but i don't understand how i can use it in "Python executeScript Processor".&lt;/P&gt;&lt;P&gt;Could you share an exemple of nifi python script or help me to change my code ?&lt;/P&gt;&lt;PRE&gt;import json
import java.io
from org.apache.commons.io import IOUtils
from java.nio.charset import StandardCharsets
from org.apache.nifi.processor.io import StreamCallback
import os

class ModJSON(StreamCallback):
  def __init__(self):
        pass
  def process(self, inputStream, outputStream):
    text = u'abcdé'
    outputStream.write(text)

flowFile = session.get()
if (flowFile != None):
  flowFile = session.write(flowFile, ModJSON())
  flowFile = session.putAttribute(flowFile, "filename","test")
session.transfer(flowFile, REL_SUCCESS)
session.commit()

&lt;/PRE&gt;</description>
      <pubDate>Tue, 09 May 2017 16:18:45 GMT</pubDate>
      <guid>https://community.cloudera.com/t5/Support-Questions/NiFi-ExecuteScript-Processor-error-using-string-in-python/m-p/159452#M121841</guid>
      <dc:creator>leroy_p33</dc:creator>
      <dc:date>2017-05-09T16:18:45Z</dc:date>
    </item>
    <item>
      <title>Re: NiFi ExecuteScript Processor: error using string in python  with special characters</title>
      <link>https://community.cloudera.com/t5/Support-Questions/NiFi-ExecuteScript-Processor-error-using-string-in-python/m-p/159453#M121842</link>
      <description>&lt;P&gt;
	Hello,&lt;/P&gt;&lt;P&gt;
	In the "process" method you can read for instance data from the inputstream, change some things and output it&lt;/P&gt;&lt;P&gt;see &lt;/P&gt;&lt;P&gt;&lt;A href="https://community.hortonworks.com/content/kbentry/75032/executescript-cookbook-part-1.html"&gt;https://community.hortonworks.com/content/kbentry/75032/executescript-cookbook-part-1.html&lt;/A&gt; for more information on executescript&lt;/P&gt;
&lt;PRE&gt; text = IOUtils.toString(inputStream, IOUtils.toString(inputStream,StandardCharsets.ISO_8859_1)
...
 outputStream.write(text)&lt;/PRE&gt;</description>
      <pubDate>Tue, 09 May 2017 16:59:00 GMT</pubDate>
      <guid>https://community.cloudera.com/t5/Support-Questions/NiFi-ExecuteScript-Processor-error-using-string-in-python/m-p/159453#M121842</guid>
      <dc:creator>chris_herssens</dc:creator>
      <dc:date>2017-05-09T16:59:00Z</dc:date>
    </item>
    <item>
      <title>Re: NiFi ExecuteScript Processor: error using string in python  with special characters</title>
      <link>https://community.cloudera.com/t5/Support-Questions/NiFi-ExecuteScript-Processor-error-using-string-in-python/m-p/159454#M121843</link>
      <description>&lt;P&gt;I have this error  " java.nio.charset.IllegalCharsetNameException: test Â²Ã©Ã"&lt;/P&gt;&lt;P&gt;with this input file : "test ²éà"&lt;/P&gt;&lt;P&gt;and this code :&lt;/P&gt;&lt;PRE&gt;import json
import java.io
from org.apache.commons.io import IOUtils
from java.nio.charset import StandardCharsets
from org.apache.nifi.processor.io import StreamCallback
from java.io import ByteArrayOutputStream
from java.lang import String
import os


class ModJSON(StreamCallback):
  def __init__(self):
        pass
  def process(self, inputStream, outputStream):
        text = IOUtils.toString(inputStream, IOUtils.toString(inputStream,StandardCharsets.ISO_8859_1))
        outputStream.write(text)
flowFile = session.get()
if (flowFile != None):
  flowFile = session.write(flowFile, ModJSON())
  flowFile = session.putAttribute(flowFile, "filename", '_translated.json')
session.transfer(flowFile, REL_SUCCESS)
session.commit()



&lt;/PRE&gt;&lt;H1&gt;&lt;/H1&gt;</description>
      <pubDate>Tue, 09 May 2017 18:17:04 GMT</pubDate>
      <guid>https://community.cloudera.com/t5/Support-Questions/NiFi-ExecuteScript-Processor-error-using-string-in-python/m-p/159454#M121843</guid>
      <dc:creator>leroy_p33</dc:creator>
      <dc:date>2017-05-09T18:17:04Z</dc:date>
    </item>
    <item>
      <title>Re: NiFi ExecuteScript Processor: error using string in python  with special characters</title>
      <link>https://community.cloudera.com/t5/Support-Questions/NiFi-ExecuteScript-Processor-error-using-string-in-python/m-p/159455#M121844</link>
      <description>&lt;P&gt;can you change &lt;/P&gt;&lt;PRE&gt;outputStream.wrtie(text)&lt;/PRE&gt;&lt;P&gt;with&lt;/P&gt;&lt;PRE&gt;outputStream.write(text.encode('latin-1'))&lt;/PRE&gt;</description>
      <pubDate>Wed, 10 May 2017 12:07:25 GMT</pubDate>
      <guid>https://community.cloudera.com/t5/Support-Questions/NiFi-ExecuteScript-Processor-error-using-string-in-python/m-p/159455#M121844</guid>
      <dc:creator>chris_herssens</dc:creator>
      <dc:date>2017-05-10T12:07:25Z</dc:date>
    </item>
    <item>
      <title>Re: NiFi ExecuteScript Processor: error using string in python  with special characters</title>
      <link>https://community.cloudera.com/t5/Support-Questions/NiFi-ExecuteScript-Processor-error-using-string-in-python/m-p/159456#M121845</link>
      <description>&lt;P&gt;There are too many IOUtils.toString() calls there, the "text" line should read:&lt;/P&gt;&lt;PRE&gt;text = IOUtils.toString(inputStream, StandardCharsets.ISO_8859_1))&lt;/PRE&gt;</description>
      <pubDate>Wed, 10 May 2017 19:52:26 GMT</pubDate>
      <guid>https://community.cloudera.com/t5/Support-Questions/NiFi-ExecuteScript-Processor-error-using-string-in-python/m-p/159456#M121845</guid>
      <dc:creator>mburgess</dc:creator>
      <dc:date>2017-05-10T19:52:26Z</dc:date>
    </item>
    <item>
      <title>Re: NiFi ExecuteScript Processor: error using string in python  with special characters</title>
      <link>https://community.cloudera.com/t5/Support-Questions/NiFi-ExecuteScript-Processor-error-using-string-in-python/m-p/159457#M121846</link>
      <description>&lt;P&gt;thank you, it works perfectly !&lt;/P&gt;</description>
      <pubDate>Thu, 11 May 2017 13:34:22 GMT</pubDate>
      <guid>https://community.cloudera.com/t5/Support-Questions/NiFi-ExecuteScript-Processor-error-using-string-in-python/m-p/159457#M121846</guid>
      <dc:creator>leroy_p33</dc:creator>
      <dc:date>2017-05-11T13:34:22Z</dc:date>
    </item>
  </channel>
</rss>

