我想用 C# 检查字符串中的编码。
有什么可行的办法吗?
我尝试使用 StreamReader 但没有路径。
foreach (string um in userMasterList)
{
counter++;
TextInfo textInfo = new CultureInfo("en-US", false).TextInfo;
string finalName = null;
if (!string.IsNullOrEmpty(um))
{
//string str = StreamReader.CurrentEncoding.ToString();
string Name = um.Trim();
//StreamReader sr = new StreamReader(Name);
// MessageBox.Show(sr.CurrentEncoding.ToString());
if (!Regex.IsMatch(Name, "^[a-zA-Z0-9]*$"))
{
finalName = GreekToLower(Name);
finalName = textInfo.ToTitleCase(finalName);
}
else
{
finalName = textInfo.ToTitleCase(Name.ToLower());
}
finalList.Add(finalName);
}
else
{
finalList.Add("-");
}
}
不确定这是否能回答你的问题:
public static bool CheckEncoding(string value, Encoding encoding)
{
bool retCode;
var charArray = value.ToCharArray();
byte[] bytes = new byte[charArray.Length];
for (int i = 0; i < charArray.Length; i++)
{
bytes[i] = (byte)charArray[i];
}
retCode = string.Equals(encoding.GetString(bytes, 0, bytes.Length), value, StringComparison.InvariantCulture);
return retCode;
}
调用代码:
CheckEncoding("Prüfung", Encoding.ASCII); //false
public static bool IsOnlyUTF8(string value)
{
byte[] bytes = value.ToCharArray().Select(c => (byte)c).ToArray();
string decodedString = System.Text.Encoding.UTF8.GetString(bytes);
return value.Equals(decodedString);
}