"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > C#에서 문자열 인코딩을 효율적으로 감지하는 방법은 무엇입니까?

C#에서 문자열 인코딩을 효율적으로 감지하는 방법은 무엇입니까?

2025-04-20에 게시되었습니다
검색:610

How Can I Efficiently Detect a String's Encoding in C#?

C#

에서 인코딩의 효율적인 감지

문자열 인코딩의 정확한 판단은 다른 소스에서 텍스트 데이터를 처리하는 데 중요합니다. 이 기사는 C#에서이 목표를 효율적으로 달성하는 방법을 살펴볼 것입니다.

코딩 단서

명시 적 선언없이 문자열의 인코딩을 결정하는 몇 가지 방법이 있습니다.

  1. bom (바이트 주문 마크) : 많은 유니 코드 인코딩에는 인코딩을 나타내는 파일 시작시 3 바이트 또는 4 바이트 서명이 포함되어 있습니다. 예를 들어 UTF-8은 0xefbbbf를 사용합니다.
  2. probe/heuristic check : 문자열의 처음 몇 바이트를 확인하여 인코딩을 감지 할 수 있습니다. 예를 들어, UTF-8은 특정 높은 비트가 설정된 바이트 패턴을 갖는 경향이 있습니다.
  3. 파일의 메타 데이터 : 일부 파일은 컨텐츠 또는 메타 데이터에 인코딩 된 정보를 포함합니다. "charset = xyz"또는 "encoding = xyz"와 같은 텍스트에서 패턴을 찾으십시오.

솔루션 개요

가 제공 한 코드는 세 가지 방법을 모두 결합하여 문자열의 인코딩을 결정합니다. 첫 번째는 BOM 감지입니다. BOM을 찾을 수없는 경우 코드는 검출기를 사용하여 UTF-8 및 UTF-16과 같은 공통 인코딩을 휴식으로 식별합니다. 마지막으로, 적절한 인코딩이 발견되지 않으면 시스템의 기본 코드 페이지로 돌아갑니다.

이 코드는 인코딩을 감지 할뿐만 아니라 디코딩 된 텍스트를 반환하여 필요한 정보를 전체적으로 제공합니다.

코드 구현

다음 C# 코드는이 솔루션을 구현합니다.

public Encoding detectTextEncoding(string filename, out String text, int taster = 1000)
{
    // 检查BOM
    // 为简洁起见省略

    // 基于探测器的编码检测
    bool utf8 = false;
    int i = 0;
    while (i 

사용법 방법

이 코드를 사용하려면 파일 경로를 문자열로 제공하고 감지 된 인코딩 된 인코딩 및 디코딩 된 텍스트를 출력 매개 변수로 검색합니다. 예는 다음과 같습니다.

```C# 문자열 텍스트; 인코딩 인코딩 = DetectTextEncoding ( "my_file.txt", out 텍스트); console.writeLine ( "감지 인코딩 :"encoding.encodingName); Console.writeLine ( "디코딩 된 텍스트 :"텍스트); ```

대체로,이 코드는 C#에서 문자열의 인코딩을 결정하는 강력한 방법을 제공하여 BOM 및 휴리스틱 점검을 활용하여 정확한 탐지를 보장합니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3