我的应用程序接受用户的输入。一些亚洲用户使用类似拉丁文的字符输入文本,但使用 Unicode 范围 U+FF01–FF5E 进行编码。当我尝试将此输入字符串与 ASCII 中的内容进行比较时,它们不相等(如预期的那样)。
这是关于字符范围的维基百科文章http://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms
如何将该范围内的字符转换为 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);
}