<?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>topic Unicode issue with Python and cx_Oracle module... in Geoprocessing Questions</title>
    <link>https://community.esri.com/t5/geoprocessing-questions/unicode-issue-with-python-and-cx-oracle-module/m-p/272010#M9375</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Thank you- your suggestion works fine.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 05 Apr 2010 19:55:31 GMT</pubDate>
    <dc:creator>StephenMitchell</dc:creator>
    <dc:date>2010-04-05T19:55:31Z</dc:date>
    <item>
      <title>Unicode issue with Python and cx_Oracle module...</title>
      <link>https://community.esri.com/t5/geoprocessing-questions/unicode-issue-with-python-and-cx-oracle-module/m-p/272008#M9373</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Synopsis&lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I am developing an integration process, using Python Win 2.5.4, that performs both geo- and tabular manipulations, and the process must work with standard Oracle 10g R2 databases (non-SDE databases) from across the enterprise.&amp;nbsp; It works well in this regards.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;However, we also have an Oracle 10g R 2 'ASP' GDB in an enterprise SDE, and cx_Oracle query results &lt;/SPAN&gt;&lt;SPAN style="font-style:italic;"&gt;appear&lt;/SPAN&gt;&lt;SPAN&gt; to be returning unicode when in fact &lt;/SPAN&gt;&lt;SPAN style="font-style:italic;"&gt;the unicode is part of the output string&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;STRONG&gt;Specifics:&lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Here's the crux of how 'cx_Oracle' is used to return results from an Oracle table within our ASP GDB:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;gt;&amp;gt;&amp;gt; import os&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;gt;&amp;gt;&amp;gt; os.environ["NLS_LANG"] =&amp;nbsp; "AMERICAN_AMERICA.WE8MSWIN1252"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;gt;&amp;gt;&amp;gt; import cx_Oracle&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;gt;&amp;gt;&amp;gt; import string&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;gt;&amp;gt;&amp;gt; oraConnectAsp =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cx_Oracle.Connection(oraUserAsp + "/" + oraPwAsp + "@" + oraDbAsp)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;gt;&amp;gt;&amp;gt; oraCursorAsp =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oraConnectAsp.cursor()&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;gt;&amp;gt;&amp;gt; whereCol =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "a2a2_" + string.lower(envArg)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;gt;&amp;gt;&amp;gt; sql =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "SELECT sys_acct FROM " + tblAspNotify + " WHERE " + whereCol + " = 'Y'"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;gt;&amp;gt;&amp;gt; print sql&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;SELECT sys_acct FROM ASP.ASP_Notification WHERE a2a2_dev = 'Y'&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;gt;&amp;gt;&amp;gt; oraCursorAsp.execute(sql)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;__builtin__.OracleCursor on &amp;lt;cx_Oracle.Connection to asp@SDEPID&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;gt;&amp;gt;&amp;gt; statusMsgList =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oraCursorAsp.fetchall()&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;gt;&amp;gt;&amp;gt; print statusMsgList&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[(u'nmassaro',), (u'smitchel',)]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;gt;&amp;gt;&amp;gt; print statusMsgList[0]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;(u'nmassaro',)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The output looks like unicode but in fact it is part of the string...&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;gt;&amp;gt;&amp;gt; x = statusMsgList[0]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;gt;&amp;gt;&amp;gt; x&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;(u'nmassaro',)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;gt;&amp;gt;&amp;gt; print x&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;(u'nmassaro',)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;...whereas unicode behaves as follows:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;gt;&amp;gt;&amp;gt; x = u"nmassaro"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;gt;&amp;gt;&amp;gt; x&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;u'nmassaro'&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;gt;&amp;gt;&amp;gt; print x&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;nmassaro&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;As stated, using 'cx_Oracle' to connect to a standard Oracle 10g R2 database (ie, a non SDE database) it is not an issue. Here's an example of the results of a query on a table in an AGED database:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;gt;&amp;gt;&amp;gt; oraConnectAge =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cx_Oracle.Connection(oraUserAge + "/" + oraPwAge + "@" + oraDbAge)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;gt;&amp;gt;&amp;gt; oraCursorAge =&amp;nbsp;&amp;nbsp; oraConnectAge.cursor()&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;gt;&amp;gt;&amp;gt; itmStr =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "upunttime, uphour, uphour, upminute, usleep, udependency"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;gt;&amp;gt;&amp;gt; sql =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "SELECT " + itmStr + " FROM " + tblDb_UpdtParam + " WHERE uname = 'A2A2'"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;gt;&amp;gt;&amp;gt; print sql&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;gt;&amp;gt;&amp;gt; oraCursorAge.execute(sql)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;__builtin__.OracleCursor on &amp;lt;cx_Oracle.Connection to geocode@AGED&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;gt;&amp;gt;&amp;gt; oraResultAge =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oraCursorAge.fetchall()&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;gt;&amp;gt;&amp;gt; print oraResultAge&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[('01:09:00', 1, 1, 9, 30, 'A2A1_FINISHED SW_FINISHED')]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;gt;&amp;gt;&amp;gt; updtDependency =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string.split(str(oraResultAge[5]))&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;gt;&amp;gt;&amp;gt; print updtDependency&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;['A2A1_FINISHED', 'SW_FINISHED']&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;gt;&amp;gt;&amp;gt; print str(updtDependency[0]) + "&amp;nbsp; " + str(updtDependency[1])&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;A2A1_FINISHED&amp;nbsp; SW_FINISHED&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If the query results were truly Unicode I could convert to ASCII, but when what appears to be Unicode is part of the output then the onus is a lot of string manipulation- not desirable.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Ideas how to return either simple ASCII or, at the worst, true Unicode?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks-&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 02 Apr 2010 21:11:34 GMT</pubDate>
      <guid>https://community.esri.com/t5/geoprocessing-questions/unicode-issue-with-python-and-cx-oracle-module/m-p/272008#M9373</guid>
      <dc:creator>StephenMitchell</dc:creator>
      <dc:date>2010-04-02T21:11:34Z</dc:date>
    </item>
    <item>
      <title>Unicode issue with Python and cx_Oracle module...</title>
      <link>https://community.esri.com/t5/geoprocessing-questions/unicode-issue-with-python-and-cx-oracle-module/m-p/272009#M9374</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Looks like it's giving you a list of tuples of unicodes instead of a list of unicodes. Try x = statusMsgList[0][0] instead, and if you REALLY need a Windows/Western European encoded string and not the unicode (ie you know you're only going to be dealing with American and/or Western European characters in your text), use x = statusMsgList[0][0].encode("cp1252", "replace")&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 05 Apr 2010 06:22:58 GMT</pubDate>
      <guid>https://community.esri.com/t5/geoprocessing-questions/unicode-issue-with-python-and-cx-oracle-module/m-p/272009#M9374</guid>
      <dc:creator>JasonScheirer</dc:creator>
      <dc:date>2010-04-05T06:22:58Z</dc:date>
    </item>
    <item>
      <title>Unicode issue with Python and cx_Oracle module...</title>
      <link>https://community.esri.com/t5/geoprocessing-questions/unicode-issue-with-python-and-cx-oracle-module/m-p/272010#M9375</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Thank you- your suggestion works fine.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 05 Apr 2010 19:55:31 GMT</pubDate>
      <guid>https://community.esri.com/t5/geoprocessing-questions/unicode-issue-with-python-and-cx-oracle-module/m-p/272010#M9375</guid>
      <dc:creator>StephenMitchell</dc:creator>
      <dc:date>2010-04-05T19:55:31Z</dc:date>
    </item>
  </channel>
</rss>

