- 締切済み
フォームcsvで正常にデータが反映されない
いつもお世話になっています。 perlで作ったcgiフォームなのですが(jcode.plを使ってます)、どうも正常にデータが反映されていないようなのです。記述してもらった内容が途中で切れてしまっています。いくつか思い当たる節があったので、実験してみたところ半角二重引用符"があるとこれも含めて以降の内容が消失してしまっているようです。入力してもらっている方はドイツの方で、"を使う機会が多いように思います。対策を教えていただけたらと思います。 たとえば、【R\"ockner etc etc ...】と入力すると、csvファイルの該当箇所は【R\】とだけなって、後は消えてしまってます。 一応確認画面を出すようにしていて、そこでは問題なく画面に全文が表示されていますので、確認画面へは正常にデータが反映しているのに不思議で仕方ありません。cgiは拾ってきたソースを適当に改変して作っているので、あまり深い知識がないのですが、csvファイルに書き込む段階でエンコードかデコードが失敗してしまっているのでしょうか。他にもトラブルが起きそうな文字などがあったら教えていただけると大変助かります。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- galluda
- ベストアンサー率35% (440/1242)
がるです。 んっと。多分¥とか’とか”とかが悪さをしていると思うのですが。 多分「確認画面から実際に書き込みに行く」ロジックの最中でデータがlostしているのではないかと推測いたします。 ですので、確認画面出力してから、それ以降のロジックで、変数データを追っかけていくと色々と見えてくるかと思います。 また何かあったら質問していただければ。
- galluda
- ベストアンサー率35% (440/1242)
がると申します。 「反映されない」というのが具体的にどんな事象を指しているのかがもう一つ不明ではあるのですが。 例えばExcelで取り込むと、とかいった感じでしょうか? CSVは固有のエスケープのやり方があります。…まぁRFCなどで規定されていないので、ちとあちこち方言はありますが。 http://d.hatena.ne.jp/gallu/20060110/p1 こちらに、CSVのフォーマットとエスケープの一例がでておりますので、よかったら参考にしてみてください。
お礼
回答ありがとうございます。説明が不足していました。申し訳ありません。ファイルをテキストでみて該当箇所が消えている、ということです。要するにデータが完全に書き込まれてないんです。たとえばデータを<>で区切るようにしているとすると、ファイルは『…<>yes<>R\<>no<>…』となって保存されているという意味です。本当は『…<>yes<>R\"ockner etc etc ...<>no<>…』となって欲しいのですが。
お礼
回答ありがとうございました。すっかり放置してしまっていました。申し訳ありません。ソースを一生懸命読んでみましたが、自力ではよくわかりませんでした。