【发布时间】:2018-07-23 14:03:23
【问题描述】:
我有一台配置为使用 PC860 代码页的打印机。
根据本站 (http://www.madore.org/~david/computers/unicode/cstab.html#CP860),我们有以下内容:
HEX CHAR
0xB3 │
0x86 Á
所以,我正在尝试将以下字符串发送到打印机
Sring test = "\u00B3Á\u00B3"
但是,除了调用 String.getBytes() 时使用的编码之外,我得到了不想要的结果:
使用ISO-8859-1、0xB3打印正确,但Á不正确。 Á 被映射到 0xC1。
使用IBM-860、Á 可以正确打印,但\u00B3不要。 \u00B3 被映射到 0x3F。
使用ISO-8859-1,如果我将字符串更改为\u00B3\u0086\u00B3(将À 替换为它的十六进制值),就会得到正确的结果。
我无法意识到我做错了什么。任何人都可以显示我缺少的东西吗?
void printString(String str) throws IOException {
//os is a OutputStream
//Using IBM-860 Charset...
os.write(str.getBytes(Charset.forName("IBM-860")));
//Using ISO-8859-1 Charset...
os.write(str.getBytes(Charset.forName("ISO-8859-1")));
}
【问题讨论】:
标签: java character-encoding iso-8859-1