コードページ文字セットを使用する生のテキスト プリンターを印刷する必要があります。私のアプリケーションに最適な文字セットは IBM858 であることがわかりました。問題は、文字列をこのコードページにエンコードすることです。
私はこれを試しました:
test = new String("#$@°\\è^ùàòèì\n".getBytes(),"Cp858");
file.write(test.getBytes());
しかし、文字が一致しません。
コードページ文字セットを使用する生のテキスト プリンターを印刷する必要があります。私のアプリケーションに最適な文字セットは IBM858 であることがわかりました。問題は、文字列をこのコードページにエンコードすることです。
私はこれを試しました:
test = new String("#$@°\\è^ùàòèì\n".getBytes(),"Cp858");
file.write(test.getBytes());
しかし、文字が一致しません。
国際文字セットを扱う 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 コード ページで印刷できるようにします。これは時代遅れです。
これは、UTF-16 文字列を Cp858 としてエンコードします。
file.write("#$@°\\è^ùàòèì\n".getBytes("Cp858"));
生のテキストプリンターで印刷する私はこれで完全に解決しました:
new PrintStream(stream,true,"Cp858")
ただし、
file.write("#$@°\\è^ùàòèì\n".getBytes("Cp858"));
プリンターがいくつかの文字を欠落しています。それがプリンターの問題なのか Java の問題なのかわかりません。