用拉丁字符对数据库内容进行XML编码

用拉丁字符对数据库内容进行XML编码,xml,ajax,character-encoding,latin,Xml,Ajax,Character Encoding,Latin,我有一个ASP Access数据库,其中包含各种欧洲语言的字符串。该数据库由各自国家的代理事先填充。如您所料,它包含带有重音符号等字符的条目。如果我用MS Access打开数据库,这些字符会显示得很好。例如,德语中相当于“Open”的单词显示为“Öffnen”(希望你能看到上面有两个点的“O”) 我有ASP代码,可以读取数据库并返回XML格式的记录。文本被传递到XMLEncode来构造XML,但这似乎只处理了5个特殊问题,如“如何知道XML是UTF-8编码的?我不太了解MS环境,但在Java中,

我有一个ASP Access数据库,其中包含各种欧洲语言的字符串。该数据库由各自国家的代理事先填充。如您所料,它包含带有重音符号等字符的条目。如果我用MS Access打开数据库,这些字符会显示得很好。例如,德语中相当于“Open”的单词显示为“Öffnen”(希望你能看到上面有两个点的“O”)


我有ASP代码,可以读取数据库并返回XML格式的记录。文本被传递到XMLEncode来构造XML,但这似乎只处理了5个特殊问题,如“如何知道XML是UTF-8编码的?我不太了解MS环境,但在Java中,一个常见的问题是假设只编写
编码=“UTF-8”“
标头使其进行UTF-8编码。您还必须将写入程序配置为实际写入UTF-8


你说Wireshark显示十六进制D6,这表明流实际上不是UTF-8编码的,不管标题怎么说。

嗯,我不完全确定原因,但我能够让它工作。在Jim的评论的提示下,我将XML和响应编码从8859-1更改回UTF-8,并在页面的元标记中更改了编码

它现在可以在IE中正常工作,浏览器现在显示正确的字符

这次我还用Wireshark检查了原始字节,XML中的“Ö”字符编码为2个字节(0xC3,0x96),而不是0xD6中的1个字节

总而言之:

在生成XML响应头的服务器端ASP代码中:

return ("<?xml version=\"1.0\" encoding=\"UTF-8\"?>") ;
在网页标题中:

<head>
  <meta http-equiv="Content-type" content="text/html; charset=UTF-8"> 


非常感谢Jim。

您是否尝试将xml编码从
utf-8
更改为
ISO 8859-1
?IE报告“系统不支持指定的编码。错误处理资源”。我在XML文件:和ASP响应:response.ContentType=“text/XML;charset=ISO 8859-1”中都更改了它。。。正确的?
return ("<?xml version=\"1.0\" encoding=\"UTF-8\"?>") ;
Response.ContentType = "text/xml; charset=UTF-8" ;
Response.Write (XMLResponse) ;
<head>
  <meta http-equiv="Content-type" content="text/html; charset=UTF-8">