0

PHP で UTF-8 データの文字列を指定すると、それを UTF-16LE ファイルに変換して保存するにはどうすればよいですか (この特定のファイルはたまたま Indesign 向けであり、タグ付きテキスト ドキュメントとして配置されます)。

データ:

$copy = "<UNICODE-MAC>\n";
$copy .= "<Version:8><FeatureSet:InDesign-Roman><ColorTable:=<Black:COLOR:CMYK:Process:0,0,0,1>>\n";
$copy .= "A bunch of unicode special characters like ñ, é, etc.";

次のコードを使用していますが、役に立ちません。

file_put_contents("output.txt", pack("S",0xfeff) . $copy);
4

3 に答える 3

1

次のコードを使用して、解決策を見つけました。

この関数はバイトオーダーを変更します ( http://shiplu.mokad.im/95/convert-little-endian-to-big-endian-in-php-or-vice-versa/から):

function chbo($num) {
    $data = dechex($num);
    if (strlen($data) <= 2) {
        return $num;
    }
    $u = unpack("H*", strrev(pack("H*", $data)));
    $f = hexdec($u[1]);
    return $f;
}

utf-8 から utf-16LE への変換で使用すると、indesign で動作するファイルが作成されます。

file_put_contents("output.txt", pack("S",0xfeff). chbo(iconv("UTF-8","UTF-16LE",$copy));
于 2013-10-26T13:16:40.657 に答える