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 から取得すると、「?」で間違った文字列が返されます。アクセント付き文字 ('é'、'è'、'à') の代わりに。更新すると、文字列が破損します (ただし、ログには適切に出力されます)。
よろしくお願いいたします。