我必须打印原始文本打印机,我必须在其中设置代码页字符集。我发现我的应用程序最好的字符集是IBM858。 现在问题是将字符串编码到此代码页。
我试过了:
test = new String("#$@°\\è^ùàòèì\n".getBytes(),"Cp858");
file.write(test.getBytes());
但是字符不匹配。
答案 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问题。