0

我有一个编码问题。我有一个 android 应用程序,它包含一个文本字段,允许用户使用希伯来语键盘并键入希伯来语字符。

我希望根据 pc862 希伯来语代码页对这些数据进行编码,以便我可以将其发送到打印机进行打印(打印机配置为根据此代码页接受数据)。我应该可以使用以下代码执行此操作:

String strData = new String(textData);
byte [] rawData = null;
try
{
    rawData = strData.getBytes("Cp862"); // Cp862: PC Hebrew
}
catch (UnsupportedEncodingException e)
{
    rawData = strData.getBytes();
}

根据此处找到的文档, http://docs.oracle.com/javase/7/docs/technotes/guides/intl/encoding.doc.html

我应该能够对此代码页进行编码。但是,代码不断抛出 UnsupportedEncodingException。我正在使用 java se 7 和 jre 7,并且已经导入了 java.io。我不确定这是为什么。我已经尝试过本文档中的其他代码页以及我尝试过的代码页,其中大多数都正确编码。

有谁知道我做错了什么?任何见解将不胜感激。

4

3 回答 3

1

您是否尝试过使用名称“IBM862”?

如果我运行以下代码:

public static void main(String[] args) {
    Map<String, Charset> avmap = Charset.availableCharsets();
    for(String name : avmap.keySet()) {
        System.out.println("Charset: "+avmap.get(name));
    }
}

我得到一个可用字符集名称列表,其中包括“IBM862”但不包括 Cp862。根据您链接的页面,“IBM862”是 Cp862 的java.nio名称。

于 2012-07-19T20:27:45.523 回答
0

默认编码 (UTF-8) 支持希伯来语,那么为什么需要 CP862?

于 2012-07-19T16:35:47.100 回答
0

我不知道您的应用程序的许可限制,但 GNU Classpath 有这样的编码器,而且源代码当然是可用的。您可以将其包含在您自己的应用程序中(当然是在许可允许的情况下)。

于 2012-07-19T19:25:50.660 回答