_parsecsv-for-php
_ライブラリを使用してcsvファイルをインポートしようとしています。指定されたcsvファイルは_Catalan language
_にあります。
問題は、与えられたcsvデータでノードを作成しようとすると、PDOException: in field_sql_storage_field_storage_write() (line 448 of /modules/field/modules/field_sql_storage/field_sql_storage.module).
のインポート中にこのようなエラーが発生することです
この問題を解決するには、各フィールドにtf8_encode関数を使用し、そのエラーを回避したことです。
正常にインポートした後、ここでの問題は、これがcsvの本文テキストであることです
Thomas Alva Edison va anunciar lainvenciódelfonògrafl’any 1877、fent unademostracióaquest mateix any。 L'any 1878 el va Patentals als Estats Units。登録者va fer servir cilindres decartrórecoberts d’estanyごとの開始、最終決定ごとのutilitzar cilindres de cerasòlida。 1889年のファン・セル・コメルシアリッツ・エイツ・クエスト。ラ・コンペテンシア・アンブル・エルス・ディスコ・ソナース・バ・アカババル・エリミナール・エル・シリンドレス・デ・セラ・カペルス・エニー1920年代。 Tot iaixívan sobreviure uns anysméscom a support d'enregisttrament a oficines amb eldictàfon。
drupal iのインポートされた本文テキストは画像として表示されています
Uを両方比較すると、uのように本文に特定の違いがあることがわかります。
l`any csv body text in drupal as lanyとしてインポートされます
d`estanyはdrupalにインポートされます。
d`enregistramentがdrupalにdenregistramentとしてインポートされます
同じテキストをdrupalにもインポートしたいのですが、記号や特殊文字が欠落していません。何が問題なのですか。
アップロードしたcsvファイル形式も添付しました。
Drupalでこの文字(')だけが正しく表示されません。これについてのヘルプは本当にありがたいです。よろしくお願いします
私はこの問題を克服する方法を見つけました。私が正確に行ったことは、インポートされたビューで、別のcharset=ISO-8859-1
は、dbからシンボルまたは文字を取得して、適切に表示します。
<?php
drupal_add_http_header('Content-Type', 'text/html; charset=ISO-8859-1,utf-8');
$new_output = utf8_decode($output);
echo $new_output;
?>
これにより、欠落していたすべての特殊文字または記号が元に戻りました。
データベースに保存されているマークアップを確認できますか?テーブルfield_data_bodyは、デフォルトではutf8にあるようです。これにより、field_formattersがプレゼンテーションレイヤーの文字を乱す可能性がなくなります。
データベース内のデータが破損している場合は、たとえば、utf8_encodeの出力をログに記録してみてください。インポートツールを使用する前に、外部ツールを使用してcsvをutf8にエンコードすることはできますか?
ファイルのエンコーディングはトリッキーであり、モジュールファイルで誤ったエンコーディングを使用しても、マークアップが変更される可能性があります。私のサービスから別のシステム更新コンテンツを提供するために、いくつかのxml-filesをISO-8859-1として出力する必要があります。ide-withdefaultエンコーディングを使用しても、ファイル形式を変更することでモジュール出力が壊れる可能性があります。したがって、さらに絞り込んでいくと、ブレークポイントが見つかります。
元のpdo-exceptionは、´-charが正しく読み取られたことを示している可能性がありますが、テキスト区切り文字と見なされていました。その場合は、エスケープを使用してください。その場合、$ row_field = '"' .addslashes($ row_field)。 '"'のようなものを使用して元のインポートを実行します。データベースに保存する前。
Addlashesの代わりはcheck_plain($ row_field)です。
これらが機能しない場合、データベースが ' tf8mb4、 "real" 'をサポートしていない可能性があります。