2

コードページ文字セットを使用する生のテキスト プリンターを印刷する必要があります。私のアプリケーションに最適な文字セットは IBM858 であることがわかりました。問題は、文字列をこのコードページにエンコードすることです。

私はこれを試しました:

test = new String("#$@°\\è^ùàòèì\n".getBytes(),"Cp858");
file.write(test.getBytes());

しかし、文字が一致しません。

4

3 に答える 3

4

国際文字セットを扱う ESC/POS プリンターでは、次のことを行う必要があります。

  • プリンタのコード ページを設定します。たとえばESC t 40、コード ページを選択しますISO8859-15。つまりJavaでoutputStream.write( new byte[]{ 0x1B, 0x74, 40 } );
  • 印刷したい文字列を同じコードページでエンコードします:outputStream.write(theStringToPrint.getBytes("ISO8859-15"));

特定のプリンターで、使用可能なコード ページとコマンドで使用する番号を確認する必要がありますESC t n。EPSON プリンターで使用できるコード ページの一覧については、 EPSON ESC/POS のドキュメントを参照してください。ESC t

EPSON プリンターについては、TM プリンターの文字コード表のページに役立つドキュメントがあります。セクションを確認してくださいSingle-byte Characters/Code Pages

国際文字セットとコマンドを使用しないでくださいESC r n。一部の ASCII 文字を置き換えて、一部の国際文字を ASCII コード ページで印刷できるようにします。これは時代遅れです。

于 2016-09-23T08:38:18.310 に答える
1

これは、UTF-16 文字列を Cp858 としてエンコードします。

file.write("#$@°\\è^ùàòèì\n".getBytes("Cp858"));
于 2012-05-17T16:58:34.587 に答える
0

生のテキストプリンターで印刷する私はこれで完全に解決しました:

new PrintStream(stream,true,"Cp858")

ただし、

file.write("#$@°\\è^ùàòèì\n".getBytes("Cp858"));

プリンターがいくつかの文字を欠落しています。それがプリンターの問題なのか Java の問題なのかわかりません。

于 2012-05-18T07:36:15.857 に答える