如何检查用户输入数据是否不是英语?

时间:2012-01-03 11:16:20

标签: asp.net facebook

我在我的应用中使用Facebook API进行用户身份验证,然后将用户数据保存到数据库中。我正在为我的应用程序使用相同的(即facebook)用户名,如果它存在,我使用名称创建用户名,但问题是某些用户没有英文显示名称。那么如何在服务器端检查这样的输入呢?

我的应用是用Asp.net编写的。

3 个答案:

答案 0 :(得分:5)

您可以使用正则表达式检查字符是否仅为a, b, c...zA, B, C...Z

using System.Text.RegularExpressions;

Regex rgx = new Regex("^[a-zA-Z]+$");

if (rgx.IsMatch(inputData))
   // input data is in English alphabet; take appropriate action...
else
   // input data is not in English alphabet; take appropriate action...

答案 1 :(得分:1)

这项任务可能有些过分,但检测输入语言的正确方法是使用Extended Linguistic Services APIsFree Language Detection API等服务

在您的情况下,我建议以适当的编码保存用户名(例如utf-8utf-16,这应该适用于Facebook上的用户名)

答案 2 :(得分:0)

您的问题不是用户名是外语,而是您尝试将数据存储到数据库而不使用适当的字符编码(这是我见过???的唯一原因当字符编码至少是当前问题的一个级别时)。

最低,你应该使用utf-8,但如果你真的很保守,你可能想要使用utf-16(甚至是utf-32 )。我还推荐这个mandatory reading


确定用户名是否为英文是不可能的。专有名词上有太多可能的变体,无法提供任何可靠的指标。然后有移植的名字等。您可以尝试检测是否存在非ASCII字符(我相信/[^ -~]/应该匹配所有字符 - 空格是ASCII中最低的“可键入”字符,〜是最高的字符),但是您正在补偿unicode问题,而不是让计算机优雅地处理。