如何在ASP.NET中转换国际PC中发布的"英语"字符?(前2205)

Jam*_*ite 2 asp.net unicode internationalization codepages

我有一个WebForm搜索页面,偶尔会有来自国际访问者的点击.当他们输入文本时,它看起来是纯ASCII az,0-9但是它们以粗体打印而我的"是这个文本"逻辑无法处理输入.在ASP.NET中有没有简单的方法将等同于AZ,0-9的Unicode字符转换为普通的旧文本?

Rol*_*lig 5

你正在获得所谓的"全角形式"的角色.在Unicode中,这些在代码点U + FF01到U + FF5E处编码.要从它们获取ASCII代码点(U + 0021到U + 007E),您必须获取它们的代码点并从中减去(0xFF01 - 0x0021).

ASCII:http:
//unicode.org/charts/PDF/U0000.pdf全宽表格:http://unicode.org/charts/PDF/UFF00.pdf

我不会说ASP.NET,但在Java中,代码看起来像这样:

String decodeFullwidth(String s) {
  StringBuilder sb = new StringBuilder();
  for (int i = 0; i < s.length(); i++) {
    char c = s.charAt(i);
    if (0xFF01 <= c && c <= 0xFF5E) {
      sb.append((char) (c - (0xFF01 - 0x0021)));
    } else {
      sb.append(c);
    }
  }
  return sb.toString();
}
Run Code Online (Sandbox Code Playgroud)