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文字のみを保存できます(ヘブライ文字はカバーしていません)。必要なのは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 に答える