3

我有一个将页面转换为 JSON 格式的 InDesign 脚本。

然而,这带有智能的“卷曲”双引号,而不是普通的双引号(“”)。当然这会产生一个无效的 JSON 文件。

试图解决这个问题,因为我需要用 PHP 对这些文件进行一些其他操作,所以我尝试接受这个问题并在文件上传时解决它。

事实证明,该功能仅适用于(并非总是)在 Windows PC 中由 InDesign 生成的引号。如果您在 MAC 上运行脚本并上传文件,它根本不起作用,因为编码似乎不同。我已经尝试过其他解决方案,但是,它们根本不会产生任何结果。

这是脚本。

    function quoteReplacer($file)
    {



        $string = file_get_contents($file);

        $string = to_utf8($string);
        $bits = array('\xe2\x80\x9c', '\xe2\x80\x9d', '\xe2\x80\x98', '\xe2\x80\x99','â','â');
        $string = str_replace($bits,'"',$string);

        file_put_contents($file,$string); 




        //file_put_contents($file,$string);

    }

    function to_utf8( $string ) { 
            return iconv( 'CP1250', 'UTF-8', $string); 
    } 
4

1 回答 1

9

该脚本应该可以工作:

// First, replace UTF-8 characters.
$text = str_replace(
 array("\xe2\x80\x98", "\xe2\x80\x99", "\xe2\x80\x9c", "\xe2\x80\x9d", "\xe2\x80\x93", "\xe2\x80\x94", "\xe2\x80\xa6"),
 array("'", "'", '"', '"', '-', '--', '...'),
 $text);
// Next, replace their Windows-1252 equivalents.
 $text = str_replace(
 array(chr(145), chr(146), chr(147), chr(148), chr(150), chr(151), chr(133)),
 array("'", "'", '"', '"', '-', '--', '...'),
 $text);

替换所有可能阻塞 JSON 的奇怪字符。礼貌:链接

Command或者,您可以让他们在所有工作站上通过按++ for MAC将其关闭,PC 上的等价物可能是++或者Shift您可以在首选项中找到它。Optionthe quote key next to Enterctrlaltshift'

于 2012-08-17T14:29:44.970 回答