Java escpos charset编码

时间:2012-05-17 16:51:40

标签: java encoding character-encoding

我必须打印原始文本打印机,我必须在其中设置代码页字符集。我发现我的应用程序最好的字符集是IBM858。 现在问题是将字符串编码到此代码页。

我试过了:

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

但是字符不匹配。

3 个答案:

答案 0 :(得分: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命令中要使用的编号。 ESC t Single-byte Characters/Code Pages列出了可用于EPSON打印机的代码页。

对于EPSON打印机,可在页面The EPSON ESC/POS documentation中找到有用的文档。查看ESC r n部分。

不要使用国际字符集var checkMobile = function(){ var isTouch = ('ontouchstart' in document.documentElement); if ( isTouch ) { var clickHandler = "click"; if('ontouchstart' in document.documentElement){ clickHandler = "touchstart"; } $j('.product_more_info').on(clickHandler,function(){ $j(this).closest('.products_overlay').find('.product_less_info').show('fast'); $j(this).hide('fast'); $j(this).closest('.products_overlay').addClass('overlay_test'); }); $j('.product_less_info').on( clickHandler,function(){ $j(this).closest('.products_overlay').find('.product_more_info').show('fast'); $j(this).hide('fast'); $j(this).closest('.products_overlay').removeClass('overlay_test'); }); } }); checkMobile(); 命令:它将替换某些ASCII字符,以便能够使用ASCII代码页打印一些国际字符,它已经过时了。

答案 1 :(得分:0)

这将UTF-16字符串编码为Cp858:

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

答案 2 :(得分:0)

使用原始文本打印机打印我完全解决了这个问题:

new PrintStream(stream,true,"Cp858")

然而

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

打印机错过了一些字符,我不知道它是打印机还是java问题。