파이프라인 구성 요소에서 문자 인코딩 구현
사용자 지정 문자 인코딩을 지원하려면 Microsoft .NET Framework 인코딩 클래스에서 파생하여 사용자 지정 인코딩 클래스를 구현한 다음 표준 플랫 파일 디스어셈블러 또는 플랫 파일 어셈블러 구성 요소에서 상속하여 사용자 지정 플랫 파일 파이프라인 구성 요소를 만들어야 합니다. 다음 예제와 같이 보호된 가상 메서드 FFDasmComp.GetDataReader를 재정의하여 구문 분석 엔진에 새 인코딩 instance 제공할 수 있습니다.
/// <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(codepage 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 클래스 사용
인터페이스를 구현 IDataReader
하고 인코딩 클래스를 만들지 않고 읽기를 수행하는 고유한 DataReader 클래스를 만들 수 있습니다.
class MyDataReader : IDataReader
{
// Implement data reader functions
// ...
}
XmlReader xr = docspec.Parse(new MyDataReader());