无法在google apps脚本中执行包含中文字符的mysql查询

时间:2018-06-15 07:19:34

标签: mysql google-apps-script encoding

我有一个谷歌应用程序脚本,如下所示:

// Initialize DB variables
var address = 'my-address'
var user = 'my-user-name'
var password = 'my-password'
var db = 'my-db'
var dbUrl = 'jdbc:mysql://' + address + '/' + db

function testUtf8() {

  // Generate an SQL query
  var conn = Jdbc.getConnection(dbUrl, user, password)
  var stmt = conn.createStatement();
  var results = stmt.executeQuery('SELECT * FROM my_table WHERE col_name=\'中文\';')

  // Display query result
  var colCount = results.getMetaData().getColumnCount()
  while (results.next()) {
    var colCount = results.getMetaData().getColumnCount()  // No result is retured even though there is a value of `中文` in col_name.
    for (var col = 0; col < colCount; col++) { 
      Logger.log(results.getString(col + 1))
    }
  }

  // Clean up
  stmt.close();
  conn.close();
}

即使表中中文的值为col_name,SQL查询也无法找到数据。

当我将查询从SELECT * FROM my_table WHERE col_name='中文';更改为SELECT * FROM my_table WHERE col_name='abc';时,它会成功返回数据。

所以这一定是编码问题。

如何成功执行包含中文字符的SQL查询?

1 个答案:

答案 0 :(得分:0)

更改

var dbUrl = 'jdbc:mysql://' + address + '/' + dbvar dbUrl = 'jdbc:mysql://' + address + '/' + db

var dbUrl = 'jdbc:mysql://' + address + '/' + db + '?useUnicode=true&characterEncoding=UTF-8'

解决了这个问题。

告诉jdbc使用utf-8编码。