有没有办法在c#中定义一个char或一个文本是unicode还是not?

时间:2014-04-06 11:44:02

标签: c# winforms unicode unicode-string

我想为自己制作一个辅助软件。
首先,这个软件需要知道输入文本是英文,或者它是一个unicode文本,如日语或阿拉伯语或...等英语除外。
现在我需要知道有没有办法定义一个字符或c#中的文本是unicode还是not?
任何提示都表示赞赏。


-------------------------
更新我的问题...
-------------------------
我不想用字典来识别文本的意思。我需要在varchar和nvarchar之间定义数据类型,如sql server数据类型。 例如,如果输入是英文字符,如a,b,c,...,z,那么我的输入是varchar,其他是nvarchar。

***我的解决方案是用来切换大小写并搜索整个所有输入文本以找到任何字符不是英文ascii代码所以如果找到任何字母,输入类型是nvarchar


这是正确的解决方案吗?

2 个答案:

答案 0 :(得分:1)

正如马修所说,你不能从任何内置的功能或方法。但是,如果输入文本不是太大,您可以迭代单词的字符,并查明它是否包含至少一个unicode字符。

private bool IsUnicode(string text)
{
    char[] _charArray = text.ToCharArray();
    bool _unicodeFlag = false;

    for(int _index=0; _index<_charArray.Length-1 && !_unicodeFlag; _index++)
    {
        if (((int)_charArray[_index]) > 255)
            _unicodeFlag = true;
    }
    return _unicodeFlag;
}

答案 1 :(得分:0)

根据定义,string中的所有文本都是C#中的Unicode。 Unicode涵盖所有语言,包括英语。

有了这个,如果你检查你的字符串中的大多数字符(例如,> 60%)的字符代码低于~256,这将为你找到一个非常好的启发式来查找拉丁语言。如果您需要检测英语与任何非英语(例如法语或德语),那么您可能需要查看something a bit more complex like a stemmer或字典识别,以便在文本中找到看起来像英语的单词。