實作管線元件中的字元編碼
若要支援自訂字元編碼,您必須藉由衍生自 Microsoft .NET Framework Encoding類別來實作自訂編碼類別,然後繼承自標準的一般檔案解譯器或一般檔案組合器元件來建立自訂的一般檔案管線元件。 您可以覆寫受保護的虛擬方法 FFDasmComp.GetDataReader ,為剖析引擎提供新的編碼實例,如下列範例所示。
/// <summary>
/// Gets a data reader instance
/// </summary>
/// <param name="dataStream">Data stream</param>
/// <param name="dataEncoding">Data encoding</param>
/// <param name="detectEncodingFromByteOrderMarks">Detect encoding from a byte order mark</param>
/// <returns>IDataReader instance</returns>
protected override IDataReader GetDataReader(Stream dataStream, Encoding dataEncoding, bool detectEncodingFromByteOrderMarks)
{
// Delegate call to the base implementation passing fixed UTF-7 encoding
return base.GetDataReader(dataStream, new CustomEncoding(), false);
}
使用預先定義的編碼類別
下列編碼類型是由 Microsoft .NET Framework 所預先定義,而且可用來建構剖析器:
ASCII
UTF7
UTF8
Unicode (UTF16)
XmlReader xr = docspec.Parse(new DataReader(System.Text.Encoding.UTF8));
使用支援的字碼頁
使用下列程式碼可支援 Shift-JIS (字碼頁 932)。
XmlReader xr = docspec.Parse(new DataReader(System.Text.Encoding.GetEncoding(932)));
使用私用編碼類別
您可以建立衍生自 System.Text.Encoding 抽象類別並執行您自己的編碼和解碼的編碼類別。
class MyEncoding : System.Text.Encoding
{
// overriding methods omitted
}
XmlReader xr = docspec.Parser(new DataReader(new MyEncoding()));
使用私用 DataReader 類別
您可以建立自己的 DataReader 類別,以實 IDataReader
作 介面並執行讀取,而不需建立任何編碼類別。
class MyDataReader : IDataReader
{
// Implement data reader functions
// ...
}
XmlReader xr = docspec.Parse(new MyDataReader());