我有一个遗留应用程序只是开始行为不端,无论出于何种原因,我不确定 . 它会生成一堆HTML,并由ActivePDF转换为PDF报告 .
这个过程是这样的:
从数据库中提取HTML模板,并在其中包含要替换的标记(例如"~CompanyName~","~CustomerName~"等)
用真实数据替换标记
使用简单的正则表达式函数整理HTML,该函数可以格式化HTML标记属性值(确保引号等,因为ActivePDF的渲染引擎只讨论属性值周围的单引号)
将HTML发送到创建PDF的Web服务 .
在这个混乱中的某个地方,HTML模板( s)中的不间断空格编码为ISO-8859-1,因此在浏览器(FireFox)中查看文档时它们会错误地显示为"Â"字符 . ActivePDF会对这些非UTF8字符产生影响 .
我的问题:既然我没有时间对其进行调查,是否有一种简单的方法可以重新编码或查找并替换坏字符?我已经尝试通过我扔在一起的这个小功能发送它,但它把它变成了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
有任何想法吗?
EDIT:
我现在正在接受这个,虽然它似乎不是一个好的解决方案:
Private Shared Function ReplaceNonASCIIChars(ByVal html As String) As String
Return Regex.Replace(html, "[^\u0000-\u007F]", " ")
End Function