【发布时间】:2014-09-14 13:21:29
【问题描述】:
我这里有两种情况:
我的数据库包含很多我想提取到页面的信息。其中一些信息是 name,其中包含非 ASCII 字符,例如 Uwe Rülke
- 运行良好的旧解决方案:
我从数据库中获取数据并直接从 VB while 循环填充页面。在这种情况下,所有字符都正确显示Uwe Rülke。
- 无法正常工作的新解决方案:
VB While 循环不会将数据直接扔到页面中,而是在 JavaScript 字符串中(通过不时不时地调用数据库来提高性能)。但是当我使用存储在 JavaScript 变量中的信息时,我得到了类似这样的信息:Uwe R�lke。
在这两种情况下,页面的编码都是:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
我哪里做错了?
这是用于获取(从数据库)然后保存到 JavaScript 字符串的代码。
我正在使用来自名为ISEquery 的页面中的AJAX LOAD 来构建特定请求并从数据库中查询它。它用于以Excel 文件或普通HTML 格式获取数据。 此时角色已经很好地表现出来了。
然后魔法发生了,角色被错误地表现出来了。我在exctractFields 函数中检查了它:
$("<div></div>").load("ISEquery.asp?isExcel=0&" + info, function(){
// Extracting the fields into an array
var rows = "";
var options = "";
$(this).children().each(function(index){
var fieldsArray = exctractFields($(this).html());
rows += createISELine(fieldsArray);
options += createISELine_ComboBox(fieldsArray);
});
});
【问题讨论】:
-
AFAIK,Javascript 使用 UTF-8,所以这是一个错误编码。您需要以 UTF-8 输出您的页面
-
@Kroltan,没用!我在几个录音和相同的结果之间改变了它。
-
向我们展示您用于将数据传输到浏览器的代码。
-
@AaronDigulla 问题已用相关代码更新。
-
客户端逻辑对于我怀疑的 HTTP GET 请求来说为时已晚。您的服务器 (ISEquery.asp) 看起来它已经在一个字符集中发送字符,但告诉浏览器它们属于另一个字符集。如果您可以嗅探 HTTP 响应标头,那么您将看到您的服务器声明它正在使用的字符集。很多时候人们将页面转换为“AJAX”并忘记检查 AJAX 响应的字符编码,因为一些服务器会自动将字符集 HTTP 响应代码添加到它可以识别为包含 HTML、CSS 或 JS 而不是其他的响应。跨度>
标签: javascript html non-ascii-characters