由于不确定的原因,我有一个旧版应用程序开始表现异常。它生成一堆HTML,由ActivePDF转换为PDF报告。
该过程如下所示:
在混乱的某个地方,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
有任何想法吗?
编辑:
我现在暂时解决了这个问题,尽管这似乎不是一个好的解决方案:
Private Shared Function ReplaceNonASCIIChars(ByVal html As String) As String
Return Regex.Replace(html, "[^\u0000-\u007F]", " ")
End Function
在混乱的某个地方,HTML模板(s)中的不间断空格被编码为ISO-8859-1,因此它们错误地显示为“”字符
那将被编码为UTF-8,而不是ISO-8859-1。不间断空格字符是ISO-8859-1中的字节0xA0;当编码为UTF-8时,它将为0xC2,0xA0,如果(错误地)将其视为ISO-8859-1,则显示为"Â "
。其中包括您可能不会注意到的结尾nbsp。如果该字节不存在,则说明您的文档有其他缺陷,我们需要进一步查看以找出问题所在。
什么是正则表达式,模板如何工作?如果将您的
字符串(正确)转换为U + 00A0 NON-BREAKING
SPACE字符,则似乎在某个地方包含了适当的HTML解析器。如果是这样,您可以只在DOM中本地处理模板,并要求它使用ASCII编码进行序列化以保留非ASCII字符作为字符引用。这也将使您不必再对HTML本身进行正则表达式后处理,而HTML本身一直是一项高度狡猾的业务。
好吧,无论如何,现在您可以将以下内容之一添加到文档中<head>
,看看它是否可以在浏览器中正确显示:
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta charset="utf-8">
如果您这样做了,那么剩下的问题就是ActivePDF的问题。
问题内容: 我在win7(x64)上安装了标准XAMPP。在过去的项目中遇到了编码方面的麻烦,其中mysql编码与php enconding不匹配,而php enconding有时又以其他编码形式输出html,因此,我决定始终使用utf-8对所有内容进行编码。 我刚刚开始使用html标记,并且已经遇到了麻烦。 我的页面是使用utf-8保存的( 我认为 没有BOM ) // update:事实并非如
如果有人知道是怎么回事,请帮忙。我已经尝试了我在互联网上找到的所有东西,但到目前为止都无济于事。出于某种原因,在idea中启动项目时,页面上显示的是问号而不是俄语字母 我已经尝试过: > 我确保windows控制台以866响应chcp请求,我读到最好设置此值 同样在区域标准设置中,在选项卡中,我还单击了“更改系统语言”按钮,然后取消选中“测试版:使用 Unicode (UTF-8) 支持全球语言”
我发现了一个问题,即数据在控制器中正确编码并编译,但在alert语句中(或页面上)没有正确显示。请看下面的配置。 Tomcat服务器属性 null null null null null null null server.xml配置 我在这里缺少了什么样的简单配置?
问题内容: 我目前正在使用ReactJS和webpack构建一个网站。 我的文本编辑器设置为编码,并且使用带重音或特殊字符的字符,例如。 在我的html页面中,我相信我使用的配置正确: 但是特殊字符的渲染方式不正确: 例如,而不是。 我尝试设置,但没有任何改变。 我觉得webpack正在使用编码构建,这使我的角色停滞不前。我该如何解决这个问题? 问题答案: 我没有找到一种使Webpack读取UTF
我们都知道计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),0 - 255被用来表示大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母 A 的编码是 65,小写字母 z 的编码是 122。 如果要表示中
我有一个缓冲区与字符编码在Windows 1252。然而,当我用适当的编码创建一个新的字符串时,而不是预期的结果,我经常会得到询问标记,例如。 因此,系统应在其上方显示带“^”的“u”字符。而是显示“?”。 任何想法?