如何检查字符串是否只包含字符,可以在ISO 8859-1中成功编码?或换句话说 - 如何在字符串中找到“非法”/“不符合ISO 8859-1”的字符?
答案 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;
}