• 解決済 shockatz

    (@shockatz)


    いつもお世話になっています。
    今回、既存のWebアプリケーションで作られたコンテンツを、Really Simple CSV Importプラグインを用いて、WordPressに読み込む作業を行いました。
    WordPress3.6.1はWindows 2008R2上のIIS 7.5で動作しています。
    また、自分はWebアプリ側のCSVエクスポート(変換プログラムはc#で作成)を担当し、WordPressは別会社エンジニアが担当します。

    読み込むコンテンツにはHTMLタグ(ダブルクォーテーションつき)が含まれており、カンマもテキスト値として存在しています。
    テキスト内のには、内部の改行コードとして\r\n(0x0D0A)が存在しています(通常のHTML文字列の表示改行と同じです)。

    テスト的に、CSVを以下の仕様、
    ・エンコーディングはUTF-8 & BOMなし
    ・全てのフィールドを “(タブルクォート)で囲む
    ・フィールド中の ” は、\” にエスケープ処理
    ・フィールド中の改行文字は \n に変換
    ・1レコードの末尾は\r\n
    で吐き出した結果、WordPress担当エンジニアより、なんの問題もなくインポートが完了したとの連絡を受けました。

    WordPressの管理画面にログインできず、結果確認が困難なため、皆様に教えていただきたいのですが、
    ・改行コード、特殊文字の仕様はこれで正しいか?
    ・LinuxサーバにMySQLごと移転した場合、内部データは正しく継承できるか?
    ・Linuxサーバになっても、現在のCSVデータ仕様でそのまま運用できるか

    です。
    よろしくお願いします。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • モデレーター Takuro Hishikawa

    (@hissy)

    ・エンコーディングはUTF-8 & BOMなし
    ・全てのフィールドを “(タブルクォート)で囲む
    ・フィールド中の ” は、\” にエスケープ処理
    ・フィールド中の改行文字は \n に変換
    ・1レコードの末尾は\r\n

    作者です。たぶんこれでOKですよ。”(ダブルクオート)は””(ダブルクオート2つ)にしてもエスケープになります。プラグイン内部にも記載してますが、LibreOfficeのエクスポート形式に準拠してますので、LibreOfficeでスプレッドシートをエクスポートしたデータをのぞいてみることをお勧めします。

    モデレーター Takuro Hishikawa

    (@hissy)

    あー、すいません、バックスラッシュはだめでした。ダブルクオート2つにしてください。詳細はPHPのfputcsv関数の仕様をご参照ください。
    http://www.php.net/manual/ja/function.fputcsv.php

    トピック投稿者 shockatz

    (@shockatz)

    hissyさま、いつもお世話になっています。
    ご多忙のところ回答いただきましてありがとうございます。

    ご指摘の通り、フィールド内の”(ダブルクォート)を””(ダブルクォート2つ)にしても、うまくいったようです。\”(エスケープ+ダブルクォート)でも上手く行っていたようですが、何か気持ち悪いので、hissyさまのおっしゃる通り、ダブルクォート2つということでFIXします。

    あと、、レコード区切りの行末改行コードと、フィールド内改行コードは、どうもphpが動作しているOSに準拠するようですね。
    行末が\r\n、セル内部が\nというのは、Windowsサーバ環境ではよくあるパターンのようです。
    近日中に、開発サーバ(Win2008R2)から本番サーバ(FreeBSD)にプログラムを移し、MySQLのデータも本番サーバに移行させますので、結果をまた報告します。

    ありがとうございました。

    モデレーター Takuro Hishikawa

    (@hissy)

    行末がCRLFでセル内部がLFというのはLinux環境下でも同じかも。確認してませんが…。CRが混じってるとアウトだったはずです。デバッガアドオンを追加インストールすると、DBへのインサートが実行されずに画面にダンプするモードになりますので、それでご確認いただくと安全かと思います。
    https://gist.github.com/hissy/7175656

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「Really Simple CSV Importの改行コードとサーバOS」には新たに返信することはできません。