如何在 java 中将 Ascii 转换为 Unicode?

How to convert Ascii to Unicode in java?

我有一个字符串是半号字体,我想将它转换为全号。我试图使用此代码

final String x = "01589846";
    String b = "";
    System.out.print("01589846");
    int y = 0;
    final char[] list = x.toCharArray();
    for (int i = 0; i < list.length; i++) {
        y = Integer.parseInt(String.valueOf(list[i]));
        final char unicode = (char) (y + 65296);
        b += unicode;

    }
    System.out.println(b);
}

它确实有效,但它只适用于数字。 有人对此有另一种方法吗?请帮助我!!!!!

Java 字符串 Unicode。他们不需要转换。 Java 本身不使用 ASCII。

您显然希望将一组 Unicode 字符映射到另一组。合适的工具是地图,但您必须使用从 Unicode code charts.

获取的所需转换来填充地图

可能有一些算法方法可以针对特定的子范围执行此操作;您似乎发现了一种适用于(西方)数字的方法。请注意,全角数字占用代码点 0xFF10 到 0xFF19,因此转换公式为 digit - '0' + 0xff10。 0xFF10 是十进制的 65296,但十六进制更清楚,因为它是在已发布的代码图表中使用的。

实际上,在我看来,同样的事情适用于 SPACE 到 '~' 范围内的所有字符,大概是设计使然。于是

for (int i=0; i<list.length; i++)
   list[i] += 0xff00 - ' ';

这里,我简单假设而不检查 list 将只包含 SPACE 到 '~' 范围内的字符,即对应于图形(可打印)ASCII 字符的 Unicode 范围.处理其他字符,例如片假名,涉及更多。

final String x = "012345 abcdef ABCDEF";
System.out.println(x);
        
String b = "";
final char[] list = x.toCharArray();
for (int i = 0; i < list.length; i++) {
    if(Character.isDigit(list[i])) {
        b += (char)(list[i] - 48 + 0xFF10);
    } else if(Character.isUpperCase(list[i])) {
        b += (char)(list[i] - 65 + 0xFF21);
    } else if(Character.isLowerCase(list[i])) {
        b += (char)(list[i] - 97 + 0xFF41);
    } else if(Character.isWhitespace(list[i])) {
        b += list[i];
    } else {
        b += (char)(list[i] - 33 + 0xFF01);
    }
}
System.out.println(b);  

输出:

012345 abcdef ABCDEF
012345 abcdef ABCDEF