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 件のコメント:
コメントを投稿