在 Java 中将半带和全带 CJK 拉丁字符转换为 ASCII



我的应用程序从用户那里获取输入。一些亚洲用户输入的文本带有类似拉丁字符,但使用 Unicode 范围 U+FF01–FF5E 进行编码。当我尝试将此输入字符串与 ASCII 中的内容进行比较时,它们不相等(如预期的那样)。

这是维基百科关于字符范围的文章 http://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms

如何将该范围内的字符转换为 ASCII 等效字符?

任何帮助表示赞赏。

如果这些是您需要转换的唯一字符,则可以使用:

String convertLatinLikeToAscii(String text) {
    char[] chars = text.toCharArray();
    for (int i = 0; i < chars.length; i++) {
        char c = chars[i];
        if (c >= 0xff01 && c <= 0xff5e) {
            // Map U+FF01 to U+0021 etc
            chars[i] = (char) (c - (0xff01 - 0x21));
        }
    }
    return new String(chars);
}

最新更新