【发布时间】:2013-10-14 11:30:39
【问题描述】:
我有一个打印格式页,它使用十六进制值来表示扩展的 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 值,但不知道如何。任何帮助将不胜感激。
【问题讨论】:
-
D5 十六进制 = 213,而不是 201
标签: java android unicode hex extended-ascii