3

MySQL DB を Google ドライブのドキュメントと同期しようとしています。この仕事をするために、Google App Script で小さなスクリプトを書きました。

文字エンコーディングを処理するときに問題が発生します (デフォルトの文字セットは照合 "general_ci" を使用した UTF-8 です)。さまざまな方法 (encodeURIComponent、小さな UTF-8 ツール クラス、Blob など) を試しましたが、何も機能しません。ここに小さなサンプルコードがあります:

var title = result.getString("title");
title = Utilities.newBlob(title, Utilities.Charset.UTF_8);
if(title.getDataAsString() != file.getName()) {
          Logger.log('Updating title for document %s from %s to %s', file.getId(), title.getDataAsString(),          file.getName());
          stmt_update_title.setObject(2, file.getId());
          stmt_update_title.setObject(1, Utilities.newBlob(file.getName(), Utilities.Charset.UTF_8).getDataAsString());
          stmt_update_title.addBatch();
        }

MySQL から取得すると、「?」で間違った文字列が返されます。アクセント付き文字 ('é'、'è'、'à') の代わりに。更新すると、文字列が破損します (ただし、ログには適切に出力されます)。

よろしくお願いいたします。

4

1 に答える 1

3

次のようなJDBCオブジェクトに特別な接続文字列を使用する必要があります

jdbc:mysql://host:port/instance?useUnicode=true&characterEncoding=UTF-8
于 2014-01-20T17:17:23.260 に答える