最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - jqueryajax set charset header - Stack Overflow

programmeradmin1浏览0评论

I am trying to set the charSet in a jquery call the site I am making is for a Lithuanian friend thus has some letters with accents etc.

As far as my research so far (2 days worth!!!) has shown, I need to place it in the beforeSend section which I have done as follows:

     $(document).ready(function(){
 $('.content').load('home.html');   //by default initally load text from boo.php
     $('#navlist a').click(function() { //start function when any link is clicked
                    $(".content").slideUp("slow");
                     var content_show = $(this).attr("title"); //retrieve title of link so we can pare with php file
                        $.ajax({
                        method: "load",url: ""+content_show,
                        beforeSend: function(){
                            XMLHttpRequest.setRequestHeader("Content-Type", "text/plain;charset=UTF-8");
                            $("#loading").show("fast");
                        }, //show loading just when link is clicked
                        plete: function(){ $("#loading").hide("fast");}, //stop showing loading when the process is plete
                        success: function(html){ //so, if data is retrieved, store it in html
                        $(".content").show("slow"); //animation
                        $(".content").html(html); //show the html inside .content div
                 }
             }); //close $.ajax(
     }); //close click(
 }); //close $(

I have tried changing it to

setRequestHeader("Content-Type", "text/plain;charset=UTF-8");

Which also does not work, so now I am stuck and at the end of my nerves having looked around for two days.

The website can be viewed at 43dennis.co.nr/bivakas Basically it loads with a bunch of square black questions marks in place of the letters with special accents.

Many thanks for the help.

I am trying to set the charSet in a jquery call the site I am making is for a Lithuanian friend thus has some letters with accents etc.

As far as my research so far (2 days worth!!!) has shown, I need to place it in the beforeSend section which I have done as follows:

     $(document).ready(function(){
 $('.content').load('home.html');   //by default initally load text from boo.php
     $('#navlist a').click(function() { //start function when any link is clicked
                    $(".content").slideUp("slow");
                     var content_show = $(this).attr("title"); //retrieve title of link so we can pare with php file
                        $.ajax({
                        method: "load",url: ""+content_show,
                        beforeSend: function(){
                            XMLHttpRequest.setRequestHeader("Content-Type", "text/plain;charset=UTF-8");
                            $("#loading").show("fast");
                        }, //show loading just when link is clicked
                        plete: function(){ $("#loading").hide("fast");}, //stop showing loading when the process is plete
                        success: function(html){ //so, if data is retrieved, store it in html
                        $(".content").show("slow"); //animation
                        $(".content").html(html); //show the html inside .content div
                 }
             }); //close $.ajax(
     }); //close click(
 }); //close $(

I have tried changing it to

setRequestHeader("Content-Type", "text/plain;charset=UTF-8");

Which also does not work, so now I am stuck and at the end of my nerves having looked around for two days.

The website can be viewed at 43dennis.co.nr/bivakas Basically it loads with a bunch of square black questions marks in place of the letters with special accents.

Many thanks for the help.

Share Improve this question asked Jul 4, 2010 at 15:08 nickynicky 8172 gold badges14 silver badges27 bronze badges 1
  • Oh.. with either XMLHttpRequest.setRequestHeader or just setRequestHeader the function does not even work... sorry forgot to mention that – nicky Commented Jul 4, 2010 at 15:11
Add a ment  | 

2 Answers 2

Reset to default 5

This isn't going to work due to security restrictions. You need to set the charset in the parent page from where this JS runs. The JS/jQuery will use the same charset.

I checked the HTML of your webpage and I see the following:

<META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

You need to replace iso-8859-1 by UTF-8, then you don't need to hassle with it in JS/jQuery.

I checked the HTTP response headers of your webpage and I see the following:

Content-Encoding: gzip
Vary: Accept-Encoding
Date: Sun, 04 Jul 2010 13:37:08 GMT
Server: LiteSpeed
Connection: close
X-Powered-By: PHP/5.2.10
Content-Type: text/html
Content-Length: 600

200 OK

The Content-Type is missing the charset attribute. You also need to set the same in the HTTP response header. Put this in your PHP code, before you emit any character into the response body.

header('Content-Type: text/html; charset=UTF-8');

Just use a UTF-8 page as innerHTML in a parent page that uses other encoding. All browsers can display different encodings in the same page.

发布评论

评论列表(0)

  1. 暂无评论
ok 不同模板 switch ($forum['model']) { /*case '0': include _include(APP_PATH . 'view/htm/read.htm'); break;*/ default: include _include(theme_load('read', $fid)); break; } } break; case '10': // 主题外链 / thread external link http_location(htmlspecialchars_decode(trim($thread['description']))); break; case '11': // 单页 / single page $attachlist = array(); $imagelist = array(); $thread['filelist'] = array(); $threadlist = NULL; $thread['files'] > 0 and list($attachlist, $imagelist, $thread['filelist']) = well_attach_find_by_tid($tid); $data = data_read_cache($tid); empty($data) and message(-1, lang('data_malformation')); $tidlist = $forum['threads'] ? page_find_by_fid($fid, $page, $pagesize) : NULL; if ($tidlist) { $tidarr = arrlist_values($tidlist, 'tid'); $threadlist = well_thread_find($tidarr, $pagesize); // 按之前tidlist排序 $threadlist = array2_sort_key($threadlist, $tidlist, 'tid'); } $allowpost = forum_access_user($fid, $gid, 'allowpost'); $allowupdate = forum_access_mod($fid, $gid, 'allowupdate'); $allowdelete = forum_access_mod($fid, $gid, 'allowdelete'); $access = array('allowpost' => $allowpost, 'allowupdate' => $allowupdate, 'allowdelete' => $allowdelete); $header['title'] = $thread['subject']; $header['mobile_link'] = $thread['url']; $header['keywords'] = $thread['keyword'] ? $thread['keyword'] : $thread['subject']; $header['description'] = $thread['description'] ? $thread['description'] : $thread['brief']; $_SESSION['fid'] = $fid; if ($ajax) { empty($conf['api_on']) and message(0, lang('closed')); $apilist['header'] = $header; $apilist['extra'] = $extra; $apilist['access'] = $access; $apilist['thread'] = well_thread_safe_info($thread); $apilist['thread_data'] = $data; $apilist['forum'] = $forum; $apilist['imagelist'] = $imagelist; $apilist['filelist'] = $thread['filelist']; $apilist['threadlist'] = $threadlist; message(0, $apilist); } else { include _include(theme_load('single_page', $fid)); } break; default: message(-1, lang('data_malformation')); break; } ?>