HTML encoding issues - “?” character showing up instead of “ ”
我有一个遗留应用程序只是开始行为不端,无论出于何种原因,我不它会生成一堆HTML,并由ActivePDF转换为PDF报告。
这个过程是这样的:
在这个混乱的地方,HTML模板(
我的问题:既然我不知道问题出在哪里,也没有时间去研究它,是否有一种简单的方法可以重新编码或找到并替换坏字符?我已经尝试通过我扔在一起的这个小函数发送它,但是将它全部变成gobbledegook strike>并没有改变任何东西。
1 2 3 4 5 | 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 |
有任何想法吗?
编辑:
我现在正在接受这个,虽然它似乎不是一个好的解决方案:
1 2 3 | Private Shared Function ReplaceNonASCIIChars(ByVal html As String) As String Return Regex.Replace(html,"[^\u0000-\u007F]"," ") End Function |
Somewhere in that mess, the non-breaking spaces from the HTML template (the s) are encoding as ISO-8859-1 so that they show up incorrectly as an"?" character
那就是编码为UTF-8,而不是ISO-8859-1。非中断空格字符是ISO-8859-1中的字节0xA0;当编码为UTF-8时,它是0xC2,0xA0,如果您(错误地)将其视为ISO-8859-1,则显示为
什么是正则表达式,模板是如何工作的?如果你的
好吧无论如何,现在你可以在文档的
-
对于HTML4:
-
对于HTML5:
如果你已经这样做了,那么任何剩下的问题都是ActivePDF的错误。
如果任何人遇到与我相同的问题且charset已经正确,只需执行以下操作:
问题:
即使我遇到了问题,我们在向CRM系统发送POST请求中发送了一些字符串'£',但是当我们从CRM进行GET调用时,它正在返回带有一些字符串内容的'?£'。所以我们分析的是'£'被转换为'?£'。
分析:
我们在研究之后发现的故障是在POST调用中我们将HttpWebRequest ContentType设置为"text / xml",而在GET Call中它是"text / xml; charset:utf-8"。
解:
因此,作为解决方案的一部分,我们在POST请求中包含了charset:utf-8并且它可以工作。
我在我的几个网站上也得到了这个问题,我需要做的就是为HTML entites定制内容标签。在此之前,我更多地删除它们,所以只需更改你的html fiter或解析页面的功能就可以了。它主要是由于大多数CMS中的HTML编辑器。他们存储解析数据的方式导致了这个问题(在我的例子中)。愿这也有助于你的情况
就我而言,即使页面被正确编码为UTF-8,我也会得到拉丁十字标志而不是。以上没有任何内容有助于解决问题,我尝试了所有。
最后改变IE的字体(具有浏览器特定的css)帮助,我使用Helvetica-Nue作为更改为Arial的正文字体解决了问题。
我遇到了同样的问题。显然,这只是因为PHP无法识别utf-8。
尽管在DreamWeaver中看起来没问题,但是当'''符号一直显示为'?'时,我才开始撕掉我的头发。最后我记得我遇到了与索引文件相关的链接问题,如果直接查看的页面可以使用幻灯片显示,但是当与包含一起使用时不会(但是就在这一点上。但无论如何我想知道这是否可能是类似的问题,所以我没有把它放入我遇到问题的页面,而是简单地将它放入index.php文件中 - 问题一直在修复。
原因是PHP无法识别utf-8。
在这里,您可以检查HTML中的所有特殊字符
http://www.degraeve.com/reference/specialcharacters.php