2013-10-07 59 views
1

我有一个打印格式页面,它使用十六进制值表示扩展ASCII字符(类似于IBM code page 437中的字符)。我正在使用这个table作为参考。我对格式页面没有发言权,所以这不能改变。将两位十六进制代码转换为Unicode编码

此打印格式页面用于我的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

D5十六进制= 213,而不是201 – ajb

回答

0

为什么你想要多走一英里?

private static final char TOP_LEFT = '╔'; 
private static final char HORIZONTAL = '═'; 
private static final char TOP_RIGHT = '╗'; 

,只是使用这些......但要注意,不同的字体可能代表这些不同...

+0

假设是不同的格式将使用不同的十六进制值来表示它们的扩展ASCII对应。这对我来说似乎是一个硬编码的解决方案。 您是如何将这些ASCII字符表示为字符串的? – Fam

+0

@ F.Ali如果它使用**不同的字符代码**,那么不管你做什么,它都不会代表你想要的字符。 “D5”将与我的解决方案一样硬编码...顺便说一下,您可以通过Alt + ppeterka

+0

D5只是一个例子...程序收到的十六进制值可以是任何东西。 – Fam

相关问题