Java减去字符串中的字符代码的值

标签 java character-encoding windows-1255

我正在尝试将字符串转换为希伯来语编码(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);
     }

我做错了什么?

最佳答案

由于您使用的是byte数组,可以存储的最大数量是255,最小数量是0,所以它只能存储扩展的ASCII字符(据我所知,它不包括希伯来语人物)。您需要的是一个 char 数组(可以存储任何 unicode 字符)。

所以,改变这个

byte[] testBytes = test.getBytes();

到此

char[] testBytes = test.toCharArray();

关于Java减去字符串中的字符代码的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27889511/

相关文章:

java - 在java taillistener中,如何处理更多的日志文件

java - Karate :使用 JUnit5 的运行者类(class)

php - 创建数据库时使用什么字符集

php - 将 Windows-1256 转换为 UTF-8

utf-8 - 如何在经典 ASP 中将 Windows-1255 转换为 UTF-8?

c - 如何打印不同的语言环境?

java - 如何使用 java swing 在 JButton 上随机显示图像?

java - 将密码正则表达式与相同的字符连续组合

go - 如何列出和复制非字母数字字符的 s3 key ?

java - 使用 UTF-8 时,为什么 equalsIgnoreCase() 对字母 æ、ø、å 失败?