2013-05-02 53 views
0

行,所以我会从https://developers.google.com/apps-script/jdbcJDBC MySQL的字符编码

function insert() { 
    var conn = Jdbc.getConnection("jdbc:mysql://<host>:<port>/<instance>", "user", "password"); 

    conn.setAutoCommit(false); 
    var stmt = conn.prepareStatement("insert into person (lname,fname) values (?,?)"); 
    var start = new Date(); 
    for (var i = 0; i < 5000; i++) { 
    // Objects are accessed using 1-based indexing 
    stmt.setObject(1, 'firstName' + i); 
    stmt.setObject(2, 'lastName' + i); 
    stmt.addBatch(); 
    } 
    var res = stmt.executeBatch(); 
    conn.commit(); 
    conn.close(); 
    var endTime = new Date(); 
    Logger.log("time is " + (endTime.getTime() - start.getTime()) + "ms"); 
    Logger.log("res has " + res.length); 
} 

我可是从斯洛伐克证明我的教程代码问题,我们有特殊字符,如žťščľýá后,我改变这一行

stmt.setObject(1, 'firstName' + i); 

stmt.setObject(1, 'žťščľýá' + i); 

我会得到????在我db.I有utf8_general_ci在我的数据库,我的表 picture

我已经看到了这个JDBC Service with MySQL : UTF-8 encoding/decoding,并试图Utilities.newBlob("").setDataFromString("foo", "UTF-8").getDataAsString("UTF-16")也是这个JDBC character encoding其中很多人都建议我的连接链路之后使用?characterEncoding=utf8,但我会得到错误信息。

回答

0

我成功地使用您在那里的字符来写入Google Cloud SQL(MySQL 5.5)。这是我有权访问的唯一MySQL数据库。

你看到一个我称之为动物的简单表格可以在其中获得正确的数据。我甚至尝试过日语,它运作良好。

enter image description here

这里是我使用的代码 -

function writeEncodingIssue() { 
    var conn = Jdbc.getCloudSqlConnection("jdbc:google:rdbms://<MY_INTSANCE_NAME>/mysql"); 
    conn.setAutoCommit(false); 
    var stmt = conn.prepareStatement("insert into animals (name) values (?)"); 
    for (var i = 0; i < 2; i++) { 
    stmt.setObject(1, 'žťščľýá' + i);//ショッピング 
    stmt.addBatch(); 
    } 
    var res = stmt.executeBatch(); 
    conn.commit(); 
    conn.close(); 
} 

或许你可以尝试用Java编写一个测试程序或别的东西来此隔离到Google Apps脚本问题?

编辑:我已经能够用MySQL重现这个问题。 issue tracker item已更新。 Apps脚本团队正在调查此问题。