2011/02/03

OpenOffice Calcでダブルクォートが特殊文字に変換される現象について

CSVファイルを扱っていて、OpenOfficeのデフォルトの挙動に困った事がありました。

それはデータとしてセルに"name"のように単純にダブルクォートで囲んだ場合に、特殊文字に展開されてしまうところです。

これを回避する方法は簡単にでメニューバーの「ツール」から「オートコレクトオプション…」を選択して、「ユーザ定義引用符」置換のチェックを外すだけです。

オートコレクトメニューの変更が必要な個所を赤丸で表示しています

Excelを使った場合のダブルクォートの扱い

CSVについてはrfc4180が一応、後出しですがまとまった情報という事になっています。

これによれば、以前も書きましたが、ダブルクォートは""のように2つを続けて出力することでエスケープできます。

最近はCouchDBにPUTするDocumentをCSVから生成できる方法を模索しているので、Map関数を定義してみました。

Excel2007でCouchDBのMap関数を定義してみた

language,views,all,map
javascript,,,"function(doc) {
  if(doc.doctype && doctype == ""log"")
    emit(doc.src);
}"

注目するのは、== ""log""のエスケープされたところです。

OpenOfficeを使った場合

すでに説明していますが、オートコレクトの挙動によって入力したダブルクォートは\u201c(0x28809c), \u201d(0xe2809d)に変換されてしまいます。

"_id";"language";"views";"all";"map";"views";"all";"reduce"
"_design/all";"javascript";;;"function(doc) {
  if (doc.doctype && doc.doctype == “log”) {
    emit(doc,null);
  }
}";;;"_count"

Unicodeの"Left Double Quotation Mark"や"Right ..."はかなり見分けるには厳しい違いなので、できればデフォルトの挙動としては勘弁して欲しいんですけどね。

とりあえず先頭に書いたようにオートコレクトのオプションを操作して、CSVファイルを生成しています。

0 件のコメント: