1

CAM PDF モジュールを使用して PDF ファイルから PDF メタデータを抽出する perl スクリプトを作成しました。次に、そのデータを取得し、DBI を使用して MySQL に挿入します。特殊文字を含む PDF ファイルを見つけました。MySQL スキーマと DB テーブルが UTF8 に設定されていることを確認できます。utf8 を使用するように設定された perl スクリプトがあり、use utf8;これを使用するように DBI 接続も設定されていますmysql_enable_utf8 => 1

一部の記号 (著作権、登録済み) を保存できるようになりましたが、商標記号がアポストロフィ/アクセントに変換されます。$dbh->do('SET NAMES utf8')設定がこれを解決するのに役立つと読みましたが、私のシナリオでは、シンボルに最初に遭遇した後にすべてのテキストが切り取られます。

問題は、PDF からのテキストが UTF8 ではなく別のエンコード形式に設定されていることだと思います。モジュールを使用してこれらの文字列をデコード/エンコードしようとするuse Encodingと、シンボルがテキストに変換されます。そのテキストが php を使用して Web ページに出力されると、シンボルとしてではなくテキストとして表示されます。

4

1 に答える 1

2

ここで関連しないことに追加するuse utf8には... PDF メタデータは特別な PDFDocEncoding (または PDFDocEncoding が十分でない場合は UTF-16BE) を使用します。ここで、商標は 10 進数の 146 です。これはCP1252で引用されています。得る。CAM::PDFはデコードを行わず (どちらもPDF::API2、btw)、生のバイトを返すためです。自分でデコードする必要があります。ただし、メタデータ抽出の単純なタスクには、Image::ExifToolを使用できます。これは、PDFDocEncoding から自動的にデコードすると述べています。

于 2013-10-21T12:48:08.477 に答える