나는 HtmlAgilityPack으로 html을 읽고, 편집하고, 그것을 StreamWriter로 출력한다. HtmlAgilityPack 인코딩은 Latin1이고 StreamWriter는 UnicdeEncoding입니다.
전환에서 일부 캐릭터를 잃어 버리고 싶지도 않습니다.
StreamWriter의 인코딩을 변경할 수없는 것 같습니다. 이 문제를 해결하기위한 최선의 방법은 무엇입니까?
웹 페이지가 실제로 Latin-1 (ISO-8859-1) 인 경우 중괄호를 사용할 수 없습니다. Latin-1에는 해당 문자에 대한 매핑이 없습니다. 브라우저에서 페이지를 열 때 둥근 따옴표를 볼 수 있으면 HTML 엔터티 ( “
및 ”
또는 “
”
) 형식 일 수 있습니다. 그러나 헤더의 내용과 임베디드 선언에도 불구하고 페이지의 인코딩이 실제로 windows-1252라고 의심됩니다.
windows-1252는 \x80..\x9F
범위의 제어 문자 (십진수 128..159
)를보다 유용하거나 (적어도 더 예쁜) 인쇄 문자로 대체한다는 점을 제외하면 Latin-1과 동일합니다. HtmlAgilityPack이 해당 단어로 페이지를 가져 와서 ISO-8859-1로 해독하면 \x93
을 제어 문자 \u0093
변환합니다. 제어 문자 \u0093
은 전혀 표시 할 수 없으면 쓰레기처럼 보입니다. 한편 브라우저는 왼쪽의 큰 따옴표에 대한 유니 코드 코드 포인트 인 \u201C
로 변환합니다.
나는 HtmlAgilityPack에 익숙하지 않고 어떤 문서도 찾을 수 없지만 윈도우 1252를 사용하도록 강요하려고한다. 예를 들어, windows-1252 (또는 "ANSI") StreamReader를 만들고 HAP을 사용하면됩니다.
추측에. ( string
아닌) Stream
쓰십시오. string
(inc. StringWriter
/ StringBuilder
쓰는 경우 .NET의 UTF-16 문자열을 암시 적으로 사용하고 있습니다.
보고 된 인코딩을 조정 ( string
사용)하고 싶다면 Jon의 대답 을 살펴보십시오.