检查字符串是否仅包含有效的ISO 8859-1字符

时间:2013-07-26 09:40:22

标签: c# string encoding character-encoding iso-8859-1

如何检查字符串是否只包含字符,可以在ISO 8859-1中成功编码?或换句话说 - 如何在字符串中找到“非法”/“不符合ISO 8859-1”的字符?

3 个答案:

答案 0 :(得分:12)

试试这个:

    private static bool IsValidISO(string input)
    {
        byte[] bytes = Encoding.GetEncoding("ISO-8859-1").GetBytes(input);
        String result = Encoding.GetEncoding("ISO-8859-1").GetString(bytes);
        return String.Equals(input, result);
    }

这个答案是基于这个Java问题的答案(我的代码是C#等价物): http://www.velocityreviews.com/forums/t137810-checking-whether-a-string-contains-only-iso-8859-1-chars.html

答案 1 :(得分:0)

您可以设置一个数组或有效字符列表,然后遍历您的字符串以检查它们是否存在于您的有效字符列表中。可以通过向其添加所有有效的latin-1字符来创建列表。

答案 2 :(得分:0)

我想出了这个主意。这有可能吗?

    private static bool IsValidISO(string input)
    {
        foreach (char c in input)
        {
            Encoding iso = Encoding.GetEncoding("ISO-8859-1");
            Encoding utf8 = Encoding.UTF8;

            byte[] isoBytes = iso.GetBytes(c.ToString());
            byte[] utfBytes = Encoding.Convert(iso, utf8, isoBytes);

            string convertedC = utf8.GetString(utfBytes);
            if (c != '?' && convertedC == "?")
                return false;
        }
        return true;
    }