我有一个打印格式页面,它使用十六进制值来表示扩展的ASCII字符(类似于IBM code page 437中的字符)。我使用此table作为参考。我对格式页面没有发言权,因此无法更改。
此打印格式页面在我的Android应用程序中用于在发送到打印机时将相关数据放在正确的位置。最终结果应该看起来像发票。
我在Java中表示某些ASCII字符时遇到了问题。例如,从上表中,字符201,205和187.按顺序组合时,它们来自我的数据表的好边框。
在Java中我试图像这样从十六进制转换为ASCII:
String hex = "D5"; //this is just for example
int n = Integer.parseInt(hex, 16); //this should return a value of 213
char c = (char)n;
“c”最终成为一些古怪的角色,这不是我想要的。我现在意识到这是因为Java正在使用Windows-1252/CP-1252 standard。
我认为解决方案是将两位十六进制值转换为相应的Unicode值,但无法弄清楚如何。任何帮助将不胜感激。
答案 0 :(得分:0)
为什么你想加倍努力?
private static final char TOP_LEFT = '╔';
private static final char HORIZONTAL = '═';
private static final char TOP_RIGHT = '╗';
并且只使用这些......但要注意,不同的字体可能代表不同的......
答案 1 :(得分:0)
听起来你可以使用String构造函数that takes byte[] and Charset arguments,使用适合你所接收数据的Charset(“IBM437”)。