1

Unicode (ギリシャ文字としましょう) を正しく印刷したいのですが、問題があります。例えば ​​:

PrintStream oStream = new PrintStream(client.getOutputStream(), true, "UTF-8");
oStream.write(" Customer    : Γειά σου\r\n".getBytes());
oStream.write(" ΚΩΔΙΚΟΣ     : 00000234242\r\n".getBytes());
oStream.flush();
oStream.close();

                             OR
 OutputStreamWriter oStream = new OutputStreamWriter(client.getOutputStream(), "UTF-16");
    oStream.write(" Customer    : Γειά σου\r\n");
oStream.write(" ΚΩΔΙΚΟΣ     : 00000234242\r\n");
oStream.flush();
oStream.close();

問題は、すべての文字を正しく印刷する解決策があるかどうかです。ギリシャ文字ならUTF-16でいいと思います。

4

2 に答える 2

3

これはおそらく問題です:

oStream.write(" Customer    : Γειά σου\r\n".getBytes());
oStream.write(" ΚΩΔΙΚΟΣ     : 00000234242\r\n".getBytes());

プラットフォームのデフォルト encodingString.getBytes()を使用してバイト配列を取得するために、エンコーディングなしで呼び出しています。とにかく、ほとんどの場合、これは悪い考えであり、先に UTF-8 を指定したという事実は、これらの 2 つの行には無関係であることを意味します。がデータを取得するときには、すでにバイナリになっています。PrintStream

代わりにこれを試してください:

oStream.print(" Customer    : Γειά σου\r\n");
oStream.print(" ΚΩΔΙΚΟΣ     : 00000234242\r\n");

ノート:

  • PrintStreamまたは のいずれかを使用しないことをお勧めしますPrintWriter。彼らは例外を飲み込みます。
  • テキストだけを書く場合は、WriterサブクラスではなくサブクラスOutputStreamを使用する必要があります
  • ソース コードが正しく処理されているかどうかさえ不明です。コードのコンパイルに使用しているものが、ソース ファイルが使用しているエンコーディングを認識していることを確認する必要があります。

出力ストリームを...でラップすることをお勧めしますOutputStreamWriter。これにより、エンコーディングを指定できます。誤ってバイナリデータを書き込むことを心配する必要はありません (API では許可されていないため)。例外は表示されません。飲み込まれる。

于 2013-10-08T15:20:06.267 に答える
0

文字列を直接使用するよりエレガントで直感的であらゆる点で優れた方法ではなく、印刷するバイト配列を作成する冗長な方法に固執する場合は、デフォルトの encoding に依存しないでください。常に指定する方がはるかに優れています。 ...

oStream.write(" Customer    : Γειά σου\r\n".getBytes("UTF-8"));
oStream.write(" ΚΩΔΙΚΟΣ     : 00000234242\r\n".getBytes("UTF-8"));

OPのコメントより

クライアントは出力ストリームであり、結果をプリンターに出力するためのより具体的なソケットです

それは問題かもしれません!私はプリンターが UTF-8 プレーン文字列を正しく取得できるとは信じていません。他のすべてが問題ないことを確認するために、プレーンな ASCII 文字列でテストしてください。

編集

Xerox WorkCentre 24 PCL 固有の問題

Xerox WorkCentre/WorkCentre Pro シリーズの PDL リファレンス ガイドから:

このドキュメントは、PS または PCL のリファレンス マニュアルではなく、PS、PCL 、または ASCII印刷ジョブで WorkCentre の拡張機能を使用するためのガイドです。

どこにもUTF-8についての単一の言及はありません...

SAP のこのドキュメントから: Xerox_SAP_Device_Types

Xerox® プリンターで Unicode 印刷を有効にするには、UTF-8 文字セットをサポートするモデル用の Unicode 印刷ソリューションを入手してください。ここでは、Xerox® International Unicode 印刷と呼ばれるオプションのキットを利用できます。

これは良く聞こえません...

于 2013-10-08T15:19:59.873 に答える