检查字符串是否仅由有效的ISO 8859-1字符组成
本文关键字:8859-1 ISO 字符 有效 字符串 是否 检查 | 更新日期: 2023-09-27 18:25:05
如何检查字符串是否仅由字符组成,这些字符可以在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;
}