4

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

4

3 回答 3

14

尝试这个:

    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

于 2013-07-26T09:59:59.407 回答
0

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

于 2013-07-26T09:42:53.150 回答
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;
    }
于 2013-07-26T10:05:10.103 回答