인코딩에 대한 질문 : HtmlagilityPack에서 StringWriter로 어떻게 출력하고 인코딩을 유지하려면 어떻게해야합니까?

StackOverflow https://stackoverflow.com/questions/1115718

문제

htmlagilitypack으로 html을 읽고 편집 한 다음 스트림 라이터에게 출력합니다. htmlagilitypack 인코딩은 latin1이고 스트림 라이터는 유니 코딩입니다.

나는 전환에서 몇 가지 캐릭터를 잃고 있고 싶지 않습니다.

스트림 라이터의 인코딩을 변경할 수없는 것 같습니다. 이 문제와 관련하여 가장 좋은 점은 무엇입니까?

도움이 되었습니까?

해결책

웹 페이지가 실제로 라틴어 -1 (ISO-8859-1)이라면 그 안에 곱슬 할 수있는 인용문을 가질 수 없습니다. 라틴어 -1에는 해당 캐릭터에 대한 매핑이 없습니다. 브라우저에서 페이지를 열 때 Curly 인용문을 볼 수 있다면 HTML 엔티티 형태 일 수 있습니다 (“ 그리고 ” 또는 “ 그리고 ”). 그러나 헤더와 임베디드 선언이 말하는 것에도 불구하고 페이지의 인코딩이 실제로 Windows-1252라고 생각합니다.

Windows-1252는 라틴어 -1과 동일합니다. \x80..\x9F 범위 (소수점 128..159) 더 유용한 (또는 적어도 더 예쁘다) 인쇄 문자. htmlagilitypack이 단어로 페이지를 가져 와서 ISO-8859-1로 디코딩하는 경우 변환됩니다. \x93 제어 캐릭터에게 \u0093, 당신이 그것을 전혀 표시 할 수 있다면 쓰레기처럼 보일 것입니다. 한편 브라우저는이를 변환합니다 \u201C, 왼쪽 이중 견적 마크의 유니 코드 코드 포인트.

나는 htmlagilitypack에 익숙하지 않으며 어떤 문서도 찾을 수 없지만 Windows-1252를 사용하도록 강요하려고 노력할 것입니다. 예를 들어, Windows-1252 (또는 "ANSI") 스트리어 리더를 만들 수 있으며 HAP가 사용하도록 할 수 있습니다.

다른 팁

추측에; a에 쓰십시오 Stream (a string). 당신이 a에 편지를 쓰면 string (INC. StringWriter/StringBuilder, 당신은 .NET의 UTF-16 문자열을 암시 적으로 사용하고 있습니다.

당신이 그냥 조정하고 싶다면 보고 된 인코딩 (그러나 a string), 그런 다음 존을보세요 여기서 답하십시오.

어떤 끝이 캐릭터를 잃고 있는지는 확실하지 않습니다. 어쨌든, 인코딩 불일치 자체가 그 자체로는 문제가되지 않습니다. 여전히 올바른 문자를 얻어야합니다. 유니 코드 스트림 라이터가 멍청한 문자를 쓰면 처음에 입력에 대한 쓰레기를 받았음을 의미합니다. 이것은 아마도 htmlagilitypack이 당신의 페이지를 잘못 인코딩했음을 의미합니다. 인코딩을 수동으로 설정할 수있는 옵션이 있으면 그렇게 할 수 있습니다.

또한 인코딩 선언이 잘못된 HTML 페이지가있을 수도 있습니다. 예를 들어 UTF-8 파일 일 수 있습니다 <meta> 라틴어 1으로 선언하는 요소. 텍스트는 어디에서 얻습니까? 웹에서 바로 다운로드합니까, 아니면 텍스트 파일에 가지고 있습니까? 후자라면 해당 파일을 어떻게 만들 수 있습니까? 메모장을 통해 수동으로 또는 코드를 통해 StreamWriter, 그러면 UTF-8 파일이있을 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top