相关疑难解决方法(0)

HTML编码问题 - "Â"字符显示而不是" "

我有一个遗留应用程序只是开始行为不端,无论出于何种原因我不确定.它会生成一堆HTML,并由ActivePDF转换为PDF报告.

这个过程是这样的:

  1. 从DB中提取HTML模板,其中包含令牌(例如"~CompanyName~","~CustomerName~"等).
  2. 用真实数据替换令牌
  3. 使用简单的正则表达式函数整理HTML,该函数可以格式化HTML标记属性值(确保引号等,因为ActivePDF的渲染引擎只讨论属性值周围的单引号)
  4. 将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
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

编辑:

我现在正在接受这个,虽然它似乎不是一个好的解决方案:

Private Shared Function ReplaceNonASCIIChars(ByVal html As String) As String
    Return Regex.Replace(html, "[^\u0000-\u007F]", " ")
End Function
Run Code Online (Sandbox Code Playgroud)

html vb.net encoding utf-8 iso-8859-1

197
推荐指数
3
解决办法
43万
查看次数

标签 统计

encoding ×1

html ×1

iso-8859-1 ×1

utf-8 ×1

vb.net ×1