JSON を CSV にエクスポート: CSV と Unicode に関するメモ

王林
リリース: 2024-07-27 00:00:03
オリジナル
478 人が閲覧しました

Export JSON to CSV: a note on CSV and Unicode

Excel へのエクスポートを可能にする JS ライブラリが複数あります。しかし、余分な依存関係を回避する最小限のアプローチに従いたい場合はどうなるでしょうか。

最も簡単なアプローチは、Excel で簡単に開くことができる JSON から CSV を生成することです。

変換ロジックを説明する前に、CSV とは何か、CSV ファイルを作成するときにどのエンコーディングを使用するかを理解しましょう。

CSV形式

この RFC 4180 カンマ区切り値 (CSV) ファイルの共通形式と MIME タイプでは、CSV 形式の定義を指定します。なお、CSV形式は正式に標準化されていないため、あくまでメモです。

主な定義

  1. 各レコードは、改行 (CRLF) で区切られた個別の行に配置されます。
  2. ファイルの最後のレコードには、終了改行がある場合とない場合があります。
  3. ヘッダーには、ファイル全体で同じ数のフィールドが含まれている必要があります。
  4. 各フィールドは二重引用符で囲まれる場合と囲まれない場合があります。
  5. 改行 (CRLF)、二重引用符、カンマを含むフィールドは二重引用符で囲む必要があります。
  6. フィールドを囲むために二重引用符が使用されている場合、フィールド内にある二重引用符は、その前に別の二重引用符を付けてエスケープする必要があります。

エンコーディング

私の JSON データには、CSV ファイルを作成するときに考慮する必要がある ISO Latin-1 (ISO/IEC 8859-1) 文字セットの文字 æ å ø が含まれています。

考慮すべき Unicode® 標準バージョン 15.0 の一部の抜粋

Unicode と UTF-8/16/32

Unicode® 標準バージョン 15.0 より:

  • Unicode は、書かれた文字とテキストの汎用文字エンコード標準であり、世界中の文字の 149,186 文字が含まれています。
  • Unicode 文字は、32 ビット形式 (UTF-32)、16 ビット形式 (UTF-16)、および 8 ビット形式 (UTF-8) の 3 つのエンコード形式のいずれかで表されます。
  • Unicode コンソーシアムは、Unicode 標準を実装する準拠した方法として、3 つの Unicode エンコード形式のいずれかの使用を全面的に承認します。たとえば、「UTF-8 と Unicode」を区別しようとする罠に陥らないことが重要です。 UTF-8、UTF-16、および UTF-32 はすべて、Unicode 標準のエンコード文字を実装するための同等に有効で準拠した方法です。

バイト オーダー マーク (BOM)

  • バイト オーダー マークに使用される文字 U+FEFF (UTF-8 EF BB BF) は、ゼロ幅ノーブレーク スペースと呼ばれます。
  • Unicode プレーン テキストの UTF-16 および UTF-32 エンコード形式は、ファイルにデータを書き込むときに使用されるバイト順序の影響を受けます。
  • 先頭のバイト シーケンスの識別 データ ストリームは、データ ストリームが UTF-8 エンコード スキームを使用していることをほぼ確実に示しているとみなすことができます。

つまり、CSV 文字列の前に幅 0 のノーブレーク スペースを追加すると、Excel は 1252: 西ヨーロッパ (Windows) または U+FEFF 文字の場合に選択するその他のエンコーディングではなく、UTF-8 エンコーディングを適用するようになります。は提供されません。

このシリーズの次の投稿では、幅ゼロのノーブレークスペースを使用して CSV ファイルを作成する場合と使用しない場合の違いを示します...

以上がJSON を CSV にエクスポート: CSV と Unicode に関するメモの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート