mysql - Character encodings of strings in gradle -


so in gradle build, why java string

"foo" acceptable mysql database utf-8 encoding, gstring "${somevalue}" not be?

what's happening this:

sql.withtransaction { def batchresult = sql.withbatch(   20,   'insert table(job_id, log_name, scenario_name, classification, value) values (?,?,?,?,?)'){  stmt ->     rows.each  {  r ->       def jobid = "${system.getenv('job_name')}:${system.getenv('build_number')}"       def classifier = "{'observer_id':${r['observer_id']}, 'sensor_name':${r['sensor_name']}}"        stmt.addbatch(                jobid,                "foo",                project.scenariofilename,                classifier,                r['count(1)'])      }   } 

this fails because utf-8 encoded database rejects value of jobid (and project.scenariofilename, , classifier), spewing escaped characters \xac unacceptable.

but what's funny is, if this

      stmt.addbatch(         new string(jobidstr.getbytes("utf-16"),"utf-8"),         "foo",         new string(project.scenariofilename.getbytes("utf-16"),"utf-8"),         new string(classifier.getbytes("utf-16"),"utf-8"),         r['count(1)']       ) 

it works.

so why "foo" seen utf-8, "${system.getenv('job_name')}" not?

incidentally, setting systemprop.file.encoding=utf-8 in gradle.properties doesn't change anything.

add .tostring() @ end of gstrings ("${..}:${..}".tostring()) when using in groovy sql.


Comments

Popular posts from this blog

scala - 'wrong top statement declaration' when using slick in IntelliJ -

c# - DevExpress.Wpf.Grid.InfiniteGridSizeException was unhandled -

PySide and Qt Properties: Connecting signals from Python to QML -