1. 程式人生 > >莫名其妙的異常003:“.”(十六進制值 0x00)是無效的字符

莫名其妙的異常003:“.”(十六進制值 0x00)是無效的字符

要求 static 當前 pri == 丟失 odin byte[] pla

讀取一個第三方的接口,返回的字符串在頁面顯示時總是提示:
“.”(十六進制值 0x00)是無效的字符。
這種錯誤一般大家也知道是因為有特殊字符的原因,無非就是講特殊字符替換掉,或者轉換為當前環境可以正常顯示的。
1、將特殊字符找出來替換掉
如果這些內容中總是那幾個特殊字符,可以將這些字符整理出來,統一替換掉正常的字符。

string sourceString = "特殊字符";
string destString = sourceString.Replace("特殊字符","普通字符");

2、轉碼
對於特殊字符較多的,難以收集的可以直接進行編碼轉換然後輸出。這個結果會造成特殊字符丟失,因為一旦編碼不識別就顯示?了。

這種情況適用於,對特殊字符不要求顯示的情形。
例如,

string ss1 = "高中?";

byte[] byteArray = System.Text.Encoding.GetEncoding("gb2312").GetBytes(ss1);

var sw = ToCommonString(byteArray, System.Text.Encoding.GetEncoding("gb2312"));

private static string ToCommonString(byte[] bytes, Encoding encode)
{
            string commonString = string.Empty;
            if (bytes != null)
            {
                int len = bytes.Length;
                for (int i = 0; i < len; i++)
                {
                    if (bytes[i] == 0) bytes[i] = 46;
                }
                commonString = encode.GetString(bytes);
            }
            return commonString;
}

莫名其妙的異常003:“.”(十六進制值 0x00)是無效的字符