检查字符串是否以UTF-8编码

问题描述 投票:0回答:2

我想用 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("-");
    }
}
c# .net string encoding utf-8
2个回答
4
投票

不确定这是否能回答你的问题:

 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

0
投票
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);
}
© www.soinside.com 2019 - 2024. All rights reserved.