sql >> データベース >  >> RDS >> Mysql

PHPでUTF-16BEエンコーディングを使用してCSVを保存する

    $key = mb_convert_encoding($key, 'UTF-16BE', "auto");
    

    (BEを使用してもよろしいですか?これはほとんど使用されないエンコーディングです。Windowsの「Unicode」はUTF-16LEです。)

    "auto"の使用は避けます from_encodingとして。これは信頼性の低いボッジであり、特に短い文字列で間違った結果を生成することがよくあります。入力は明らかにUTF-8であるため、代わりに明示的に指定する必要があります。

    fputcsv($f, array_merge($firstLineKeys, $lineEncoded));
    

    残念ながら、fputcsv UTF-16でエンコードされたファイルに書き込めません。シングルバイトのASCIIコンマ/引用符/改行を使用するため、ASCIIスーパーセットであるエンコーディングに対してのみ機能します。したがって、これを使用する場合は、ファイル全体をUTF-8として書き込み、ファイル全体をUTF-16にトランスコードする必要があります。

    代わりに、別の(または独自の)CSVライターを検討することをお勧めします。非ASCIIエンコーディング、fputcsvに使用するのは面倒です。 また、CSVファイルのRFC標準に準拠していないため、CSVを消費するほとんどのソフトウェアが適切にロードできないファイルを簡単に生成できます。

    PHPに組み込まれているCSV関数は、基本的にすべての人の時間を無駄にします。




    1. SQLiteトランザクション

    2. テーブルの名前付けのジレンマ:単数形と複数形

    3. OracleSQLのCaseステートメントの一部でエイリアスを使用する

    4. SQLIN句をパラメータ化する