1

**MySQL の LOAD DATA INFILEコマンドを使用して、データベースに CSV ファイル**をインポートしています。ファイルは必ずしもUTF-8 でエンコードされているとは限りません。それを制御することはできないため、事前/事後処理に頼る必要があります。データベースと HTML Web ページの両方で UTF-8 エンコーディングが適用されます。Load Data infile を行うため、これを後処理する必要があります。そのため、データベースから情報を抽出し、htmlentities を使用して後処理フィルターを適用します。

   foreach($records as $r)
       $updates[] = htmlentities($r["column"], ENT_COMPAT, 'UTF-8');

次に、DB テーブルを再度更新します。

列は、後処理の前と同じようにテーブルに入りますが、その後、列は空白になります。これは、htmlentities が空白を返したことを意味し、これは HTML の有効な戻り値です。

具体的には、候補値は次のとおりです。

「PJウェザープルーフ32®」

理由はありますか?

4

1 に答える 1

2

呼び出しの「UTF-8」パラメーターはhtmlentities()、着信データが UTF-8 であることを約束します。データがそうでない場合、関数は空白の値を返します。

エンコーディングを試して盗聴する必要がありますが、これは信頼性の低いプロセスであり、可能なエンコーディングのセットが非常に限られている場合にのみうまく機能します。たとえば、この回答を参照してください。

いずれにせよ、呼び出しを取り除くことができhtmlentities()ます - それは状況を助けるために何もしません.必要のないところに無駄に HTML エンティティを追加するだけです.

于 2013-07-12T07:40:24.543 に答える