我正在尝试打印到只支持CP866编码的设备。
不幸的是,我打印的设备(Android设备)不支持CP866,导致"abc".getBytes("CP866")
抛出UnsupportedEncodingException
。
所以,我想,我必须自己做Unicode
到CP866
编码。有没有免费的java库可以做到这一点?
根据Oracle文档,Cp866是Java 7支持的编码。所以要么
- 您使用的是不支持Cp866的旧版本Java(例如,参见@Joachim的评论!!),或者
- Java运行时无法识别您正在使用的名称。(字符集的规范名称是
"Cp866"
而不是"CP866"
)
UPDATE -不太可能是后者。从我从源代码中得出的结论来看,标准"提供者"使用的字符集查找机制不区分大小写。
引用:
- Java 7中支持的编码Java 6支持的编码Java 5支持的编码
http://msdn.microsoft.com/en-us/goglobal/cc305166有字符列表;如果没有预先制作的选项,编写代码来遍历数组,将Unicode字符转换为适合CP866的字节,应该不会花费太多时间。
类java.nio.charset.Charset
既支持Cp866,当然也支持Unicode。我想你可以使用encode
和decode
方法。
我需要在android中使用Cp866编码字符串。您可以使用java库与组成的字符集类。
这是链接:http://www.doc.ic.ac.uk/~awl03/cgi-bin/trac.cgi/miro/browser/trunk/gcc/libjava/classpath/gnu/java/nio/charset
如果你想扩展Charset类并添加你的私有Charset:Java NIO。第六章字符集