、PASSTHROUGH
を使用して、Escape
APIはどのように処理されていない生の8ビットのデータを受け入れる... PAnsiCharを受け入れる発見〜によってEscape
。データはデバイスに直接渡されます。あなたは、そのドキュメントからEscape
機能について学ぶことができ
:https://msdn.microsoft.com/en-us/library/windows/desktop/dd162701.aspx
プリンタはUTF-8を理解している場合、あなたのアプローチが動作するはずです。しかし、プリンタがUTF-8を理解していないと失敗します。言い換えれば、実際にはEscape
についての質問ではなく、お使いのプリンタに関する質問です。そのドキュメントを参照する必要があります。
質問の間を読んで、あなたのデータベースに使用されているエンコーディングが印刷に関するあなたの考えを動かすように思われているようです。それは間違っているようです。データベースとプリンタの間には接続がありません。プリンタがUTF-8を認識しているかどうかは、データベースのテキストエンコーディングとは無関係です。まず、プリンタに必要なエンコーディングを調べる必要があります。データベースで使用されているものと同じでない場合は、変換する必要があります。あるエンコーディングから別のエンコーディングへの変換は、通常は簡単です。
返信いただきありがとうございます!しかし、私はEscapeがDelphi 2009(https://i.stack.imgur.com/6jOwP.jpg)でPAnsiCharを受け入れることを発見しました。それでもUTF8データを受け入れることはできますか? – rardark
'PAnsiChar'は、8ビット文字のヌル終端配列へのポインタです。それらがどのようにコード化されているかは別の問題です。 C++のように、8ビットエンコーディングごとに異なる文字型を持たないDelphiもあります。 ANSIとUTF-8はC++の 'char'に保持されています。 Delphiにマッピングされ、C++の 'char'はDelphi' AnsiChar'になります。したがって、UTF-8でエンコードされた8ビットの 'AnsiChar'要素の配列を渡すことができます。次に何が起こるかはプリンタに伝わります。 UTF-8でエンコードされたデータを理解できるという証拠はありますか? –
null終端の文字配列について言及してきたが、 'Escape'ではバイト長を指定する引数を受け付けない。データはテキストである必要はないので、これが必要です。厳密に言えば、この関数はおそらくバイト配列を受け入れるべきですが、これは歴史的な理由からです。 –