2012-03-15 44 views
1

我在ASP经典页面上动态加载部分内容的问题。我使用AJAX动态加载页面,具体取决于下拉选择选项。生成包含一些标签,用于在下拉菜单中包含下拉菜单和选项文本。标签是以UTF-8编码的常量,包含一些西欧重音字符,选项文本从数据库加载,也包含带重音符号的字符,但用ANSI编码。标签被设置为utf-8,但它仅影响页面的第一次加载,因为它们全部放在页面上。选择其他选项后,AJAX会填充元素,并且它会加载标签,但选项文本会混乱,所以我猜AJAX没有加载第二次等文本编码。解决方法是更改​​常量中的标签文本,并在第一次加载的页面上设置 <%Response.Charset =“windows-1252”%>。 现在,我想找到更好的方法,在AJAX响应中将其全部设置为UTF-8或windows-1225,或者将页面上的每个元素设置为与ajax具有不同的编码。我甚至试过从ASP经典的替换功能,它的工作原理,但它又需要每个新的重音字母替换。任何帮助感谢! :)通过AJAX加载的ASP经典错误字符集

回答

3

我认为解决编码问题的最佳方法是切换到utf-8。它不仅消除了使用你自己的语言处理特殊字符的麻烦,而且还消除了所有语言(正如我所了解的utf-8)。

首先,在HTML头中包含以下元标记。

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

您还需要在所涉及的所有ASP-文件的顶部设置UTF-8。

response.codepage = 65001 
response.charset = "utf-8" 

请注意尽管这帐和从你的ASP的页面(例如经由一种形式)的字符将被解释为UTF-8。在脚本的内部,字符串以unicode存储。 确保始终将数据保存为数据库中的unicode。

阅读这个问题的答案question进行更深入的信息

+0

我知道。每个页面都包含,但是当我从数据库加载数据时,它会变为utf-8 automaticaly并在页面上该数据已损坏。 DB数据类型的变化不是一个选项,因为我们的数据库太大,并且被广泛使用。这是两个不同数据源(.asp LIB和DB)的独特问题。我想从ajax获得响应,然后过滤它(.filter())并添加charset = utf-8到下拉标签,并在下拉选项数据上添加charset = windows-1252。不能找到如何在同一时间过滤两件事cos 1部分被删除 – user1271080 2012-03-15 12:16:01

+0

将utf-8存储在数据库中是一个可怕的想法。对这些数据的任何操作让我们假设SQL必须知道它是utf-8。对于像测量一个字符串长度这样的简单操作,你会变成大麻烦。在数据库中存储unicode。 – Paul 2012-12-21 13:16:20

+0

@保罗我根据你的评论改变了我的答案。请确认我说得对。如果正确的话,如果您删除了否定的投票,那将会很好。祝你有个愉快的星期五! :) – David 2013-01-11 13:51:09