CSVファイルを扱っていて、OpenOfficeのデフォルトの挙動に困った事がありました。
それはデータとしてセルに"name"のように単純にダブルクォートで囲んだ場合に、特殊文字に展開されてしまうところです。
これを回避する方法は簡単にでメニューバーの「ツール」から「オートコレクトオプション…」を選択して、「ユーザ定義引用符」置換のチェックを外すだけです。
Excelを使った場合のダブルクォートの扱い
CSVについてはrfc4180が一応、後出しですがまとまった情報という事になっています。
これによれば、以前も書きましたが、ダブルクォートは""のように2つを続けて出力することでエスケープできます。
最近はCouchDBにPUTするDocumentをCSVから生成できる方法を模索しているので、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 件のコメント:
コメントを投稿