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または、MAC の+ Shift+ Option+ を押して、すべてのワークステーションでオフにすることもできますthe quote key next to Enter。PC ではおそらくctrl+ alt+ shift+に相当するか、設定'で見つけることができます。

于 2012-08-17T14:29:44.970 に答える