带有.get响应的字符编码问题

时间:2011-10-24 16:27:51

标签: jquery coldfusion character-encoding

据我所知,当BOM字符不匹配时会生成字符串。我在jQuery .get()调用的响应开始时得到它们。目前,我正在攻击响应并删除角色,但我想了解为什么会这样。

现有网站包含元标记:

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

我尝试添加标题:

header('Content-Type: text/html; charset=utf-8');
标题标记之前的

,既可以单独使用,也可以与元标记结合使用。无论是否存在这些标记,Firefox都会报告该页面具有UTF-8编码。我已经尝试用指定编码的.ajax()调用替换.get()调用,但无济于事:

$.ajax(
        {
            type:'GET',
            url: 'common/includes/FilterDataLog.cfm',
            contentType: "application/x-www-form-urlencoded;charset=UTF-8",
            data: 'column='+selectedValue+'&filterValue='+filterValue+'&filterID='+filterID+'&configFile=log/log.xml',
            success: function(response){
                //response = response.replace('', '');
                thisTextFilter.replaceWith(response);
            }
        });

FilterDataLog.cfm页面返回:

<div id="" class="fl txt_input_container">
<input type="text" class="txtvalueFilter" id="myFilterID" name="txtvalueFilter" value="#url.filterValue#"/>
</div>
<script>
    $(document).ready(function(){           
        $('#myFilterID').autocomplete({
            delay: 500,
            source: function(request, response) {
                $.ajax({
                    url: "cfc/autoSuggestLog.cfc?method=lookupSomething&returnformat=json",
                    dataType: "json",
                    data: {
                      search: request.term,
                      maxRows: 30
                    },
                    success: function(data) {
                      response(data);
                    }                   
                })
            },
            change: function(event, ui) {     
                if (!ui.item) {
                    $(this).val('');
                }
            }
        });
    }); 
</script>

我在网站上找不到其他地方设置字符编码,所以我很难过。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

这里有几件事需要检查。

  1. 首先,确保您的IDE正确保存.cfm / .cfc文件。如果您使用基于Eclipse的编辑器(如CFBuilder,CFEclipse或其他Eclipse插件),则可以单击 Window&gt;首选项,然后导航至常规&gt;工作区即可。确保您的文字文件编码为'UTF-8'。我觉得这是你的问题。如果您没有使用一种比较流行的ColdFusion编辑器,则需要咨询自己的IDE帮助文件。完成后,重新保存文件并重试。
  2. 如果第一步没有解决问题,请尝试在CFC的头部放置一个:<cfprocessingdirective pageencoding="utf-8"/>

答案 1 :(得分:1)

要确定问题是否源自IDE,我会将您的代码复制并粘贴到文本编辑器(如NotePad ++)中。然后,您可以选择编码&gt;转换为不带BOM的UTF-8 ,然后保存并重新运行该文件。如果未发生错误,则IDE中的设置将更改。

您没有提及您的服务器,您是否正在运行ColdFusion的独立副本?或者它是通过IIS,Apache Tomcat,Apache HTTPD运行的?其中任何一个都可能是BOM插入的来源。