检查字符串是否仅由有效的ISO 8859-1字符组成

本文关键字:8859-1 ISO 字符 有效 字符串 是否 检查 | 更新日期: 2023-09-27 18:25:05

如何检查字符串是否仅由字符组成,这些字符可以在ISO 8859-1中成功编码?或者换句话说,如何在字符串中找到"非法"/"不符合ISO 8859-1"的字符?

检查字符串是否仅由有效的ISO 8859-1字符组成

试试这个:

    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

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

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

    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;
    }