확실하지 않은 어떤 이유로 든 기존 앱이 잘못 작동하기 시작했습니다. ActivePDF에 의해 PDF 보고서로 변환되는 HTML을 많이 생성합니다.
프로세스는 다음과 같이 작동합니다.
- 교체 할 토큰이있는 DB에서 HTML 템플릿을 가져옵니다 (예 : "~ CompanyName ~", "~ CustomerName ~"등).
- 토큰을 실제 데이터로 교체
- 속성에 HTML 태그 속성 값의 서식을 지정하는 간단한 정규식 함수를 사용하여 HTML을 정리합니다 (ActivePDF의 렌더링 엔진은 속성 값 주위에 작은 따옴표 만 제외하고 따옴표 등을 보장합니다).
- PDF를 작성하는 웹 서비스로 HTML을 전송하십시오.
그 엉망인 어딘가에서 HTML 템플릿 (
들) 의 비 공백 공백은 ISO-8859-1로 인코딩되어 브라우저에서 문서를 볼 때 "Â"문자로 잘못 표시됩니다 (FireFox). 이러한 비 UTF8 문자에 대해 ActivePDF가 푸시합니다.
내 질문 : 문제의 원인을 알지 못하고 조사 할 시간이 없기 때문에 나쁜 문자를 다시 인코딩하거나 찾아서 바꿀 수있는 쉬운 방법이 있습니까? 나는 함께 던진이 작은 기능을 통해 그것을 보내려고했지만 모든 것을 gobbledegook로 바꾸어 아무것도 변경하지 않습니다.
Private Shared Function ConvertToUTF8(ByVal html As String) As String
Dim isoEncoding As Encoding = Encoding.GetEncoding("iso-8859-1")
Dim source As Byte() = isoEncoding.GetBytes(html)
Return Encoding.UTF8.GetString(Encoding.Convert(isoEncoding, Encoding.UTF8, source))
End Function
어떤 아이디어?
편집하다:
좋은 해결책처럼 보이지는 않지만 지금은이 문제를 해결하고 있습니다.
Private Shared Function ReplaceNonASCIIChars(ByVal html As String) As String
Return Regex.Replace(html, "[^\u0000-\u007F]", " ")
End Function