UbuntuでPDFTKでphpを使用しています。PDF にデータを入力すると、この文字にアクセント付きの奇妙な文字が表示されます: á í . 私はUTF-8エンコーディングを使用しています: 1 - TRUEを出力する echo mb_check_encoding ($var, 'UTF-8') でチェックしました。私に何ができるか考えていますか?
また、utf8_decode で ISO に変換しようとしましたが、それでもうまくいきません。
ありがとう
そうです、utf8_decode() は、Windows-1252 (つまり、U+0000–U+00FF) としてエンコードできる文字に対して機能します。
ただし、Windows-1252 でエンコードできない文字には使用できません。
ただし、UTF-16BE を使用していつでも文字をエンコードできます。これは、単一のフィールドに対してのみ行うことができます。たとえば、「özil」という単語をエンコードするには、次のようにします。
<<
/V (þÿ^@ö^@z^@i^@l)
/T (name)
>>
(ここで、"^@" は NUL 文字 (U+0000) を示します。これは、ファイルが Windows-1252 (latin1) でエンコードされている場合、私のエディター (vim) でどのように見えるかです。)
バイト オーダー マーク (ファイルが Windows-1252 でエンコードされている場合は "þÿ" と表示されます) を使用する必要があり、文字列全体 (2 つの括弧の間) を UTF-16 でエンコードする必要があることに注意してください。
PHP スクリプトで FDF を生成している場合は、次のようにすることができます。
<<
/V (<?php echo chr(0xfe) . chr(0xff) . str_replace(array('\\', '(', ')'), array('\\\\', '\(', '\)'), mb_convert_encoding("özil", 'UTF-16BE')); ?>)
/T (name)
>>
次のように 16 進コードを書き出すこともできます (つまり、括弧ではなく角括弧で囲みます)。
<<
/V <FEFF00F6007A0069006C>
/T (name)
>>
これはまったく同じ結果になります (文字列 "özil")。文字に関しては効率が悪いですが、実際にはpdftkの方が信頼性が高いようです.pdftkにはいくつかのバグが見つかりました(バージョン2.02)。
最後に、任意の文字の Unicode コード ポイントを 8 進表記 (\ddd) で書き出すこともできます。たとえば、ö のコードポイントは U+00F6 で、8 進数では 366 であるため、次のように記述できます。
<<
/V (\366zil)
/T (name)
>>
ただし、これは U+00FF (8 進 377) までしか機能しません。それを超えると、UTF-16 を使用する必要があります。
PDF 標準では、FDF ドキュメント全体のエンコーディングを UTF-8 に設定できます。私はこれを試しましたが、pdftk では動作しませんでしたが、理論的には次のように実行されます。
%FDF-1.2
1 0 obj
<<
/Version /1.3
/Encoding /utf_8
/FDF
(標準によると、おそらくヘッダーでも FDF バージョンを 1.3 (またはそれ以上) に設定する必要があります。)
フィールド レベルでこれを行うこともできます。
<<
/V (özil)
/T (name)
/Encoding /utf_8
>>
しかし、私が言ったように、私はこれを機能させることができませんでした。pdftk はそれを無視しているようです。
utf8_decodeで解決しました。キャッシュに問題があり、文字がまだ表示されていたと思います