PHP/jQuery UTF 问题

PHP/jQuery UTF issue

各位早安,

今天早上遇到了一个真正令人头疼的问题,我希望你能提供帮助。

我有一个后台切换器插件,在我的 Wordpress 站点外部。它希望以下列格式提供图像:

["http://www.path/to/image.jpg", "http://www.path/to/image2.jpg"]

我正在使用以下函数将字符串从我的站点传递到外部脚本:

<?php 
if($page_id == 5) { ?>

  <?php
  $cat            = 62; //category id
  $posts          = get_posts('showposts=-1&order=ASC&cat='. $cat);
  $list           = "'";

  if ($posts) {
    foreach($posts as $post) {
      $imgsrc           = wp_get_attachment_image_src(get_post_thumbnail_id( $post->ID ), "Full");
      $featuredimgpath  = $imgsrc[0];
      $list             .= '"'.$featuredimgpath.'",';
    } 
  }

  $list = substr($list, 0, -1);
  $list .= "'";
  echo "<script charset='utf-8'>var paths=encodeURIComponent($list);</script>";
  ?>

接收函数是这样处理的...

paths = decodeURIComponent(paths);

if(jQuery().bgswitcher) {
    $(".splash").bgswitcher({
      images: [paths], // Background images
      effect: "fade", // fade, blind, clip, slide, drop, hide
      interval: 4000, // Interval of switching
      loop: true, // Loop the switching
      shuffle: false, // Shuffle the order of an images
      duration: 1500, // Effect duration
      easing: "linear" // Effect easing
    });
}

尽管控制台日志和警报输出以预期格式显示字符串,但所有关联图像的结果都是 404。

我唯一注意到的是接收脚本输出带有 ASCII/UTF-8 个字符的字符串,例如 %22 替换引号。这就是为什么我使用了 encodeURI 功能,但问题仍然存在。

有谁知道我该如何解决这个问题?或者即使我以错误的方式解决问题?

一如既往地提前致谢! 格雷厄姆

更改此行:

echo "<script charset='utf-8'>var paths=encodeURIComponent($list);</script>";

echo "<script charset='utf-8'>var paths=$list;</script>";

想通了!我只是使用 PHP 直接将 jQuery 打印到页面 - 这完全消除了跨文件编码问题:)