파일 인코딩의 정확한 식별: 실용적인 방법
파일 인코딩을 올바르게 식별하는 것은 텍스트 처리에 매우 중요합니다. 그러나 StreamReader.CurrentEncoding
속성은 정확한 결과를 제공하지 않는 경우가 많습니다. 이 문제를 해결하기 위해 보다 안정적인 방법은 파일의 BOM(Byte Order Mark)을 분석하는 것입니다.
BOM의 역할
BOM은 텍스트 파일의 엔디안과 인코딩을 나타내는 일련의 바이트입니다. 일반적인 BOM은 다음과 같습니다.
BOM을 기준으로 파일 인코딩 결정
다음 C# 코드는 자세한 구현을 제공합니다.
<code class="language-csharp">public static Encoding GetEncoding(string filename) { // 读取 BOM byte[] bom = new byte[4]; using (var file = new FileStream(filename, FileMode.Open, FileAccess.Read)) { file.Read(bom, 0, 4); } // 分析 BOM if (bom[0] == 0x2b && bom[1] == 0x2f && bom[2] == 0x76) return Encoding.UTF7; if (bom[0] == 0xef && bom[1] == 0xbb && bom[2] == 0xbf) return Encoding.UTF8; if (bom[0] == 0xff && bom[1] == 0xfe && bom[2] == 0 && bom[3] == 0) return Encoding.UTF32; //UTF-32LE if (bom[0] == 0xff && bom[1] == 0xfe) return Encoding.Unicode; //UTF-16LE if (bom[0] == 0xfe && bom[1] == 0xff) return Encoding.BigEndianUnicode; //UTF-16BE if (bom[0] == 0 && bom[1] == 0 && bom[2] == 0xfe && bom[3] == 0xff) return new UTF32Encoding(true, true); //UTF-32BE // 如果未检测到 BOM,则回退到 ASCII return Encoding.ASCII; }</code>
이 방법을 사용하면 모든 텍스트 파일의 인코딩을 정확하게 식별하여 올바른 데이터 해석과 텍스트 처리를 보장할 수 있습니다.
위 내용은 BOM(바이트 순서 표시)을 사용하여 파일의 인코딩을 안정적으로 결정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!