1

我正在尝试将字符串转换为希伯来语编码(windows 1255),所以我需要从任何 char 1264 的值中减去并放入新字符串中。

这是我要转换的 javascript 代码:

strText = strText.replace(/[א-ת]/ig, function(a,b,c) {
        return escape(String.fromCharCode(a.charCodeAt(0)-1264));
    });

这就是我用 Java 做的,但我没有得到预期的价值:

String test = "שלום";
byte[] testBytes = test.getBytes();
String testResult = "";
for (int i = 0;i < testBytes.length;i++)
     {
        testResult += (char)((int)testBytes[i]-1264);
     }

我究竟做错了什么?

4

2 回答 2

0

由于您使用的是byte数组,因此可以存储的最大数字为 255,最小为 0,因此它只能存储扩展的 ASCII 字符(afaik 它不包括希伯来字符)。您需要的是一个char数组(可以存储任何 unicode 字符)。

所以,改变这个

byte[] testBytes = test.getBytes();

对此

char[] testBytes = test.toCharArray();
于 2015-01-11T16:49:03.990 回答
0

调用时需要传递编码String.getBytes(String)。就像是

public static void main(String[] args) {
    String test = "שלום";
    try {
        byte[] testBytes = test.getBytes("UTF-8");
        String testResult = new String(testBytes, "UTF-8");
        System.out.println(testResult);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

输出是

שלום
于 2015-01-11T16:49:30.680 回答