說明
通過ajax或者瀏覽上傳文本文件,上傳時候c#處理時候因為文本格式的創建不同,在獲取內容時候會出現中文亂碼。
解決方法
通過上傳的文件流,判斷文件的編碼格式,在使用對應的編碼格式獲取文本內容
#region 通過給定的文件流,判斷文件的編碼類型
/// <summary>
/// 通過給定的文件流,判斷文件的編碼類型
/// </summary>
/// <param name=“fs“>文件流</param>
/// <returns>文件的編碼類型</returns>
private string GetType(byte[] fs,out string errorMsg)
{
string reVal = "Default";
errorMsg = "";
if (IsUTF8Bytes(fs,out errorMsg) || (fs[0] == 0xEF && fs[1] == 0xBB && fs[2] == 0xBF))
{
reVal = "UTF8";
}
else if (fs[0] == 0xFE && fs[1] == 0xFF && fs[2] == 0x00)
{
reVal = "BigEndianUnicode";
}
else if (fs[0] == 0xFF && fs[1] == 0xFE && fs[2] == 0x41)
{
reVal = "Unicode";
}
return reVal;
}
#endregion
//獲取文本內容
System.Text.Encoding.Default.GetString(fs)
測試結果
Windows 平台下Default(默認格式),UTF8,BigEndianUnicode,Unicode大部分能識別到