1

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

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

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

任何帮助表示赞赏。

4

1 回答 1

2

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

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);
}
于 2012-04-12T07:09:48.860 回答