dtip91401
2013-10-25 15:15
浏览 187
已采纳

如何使用PHP将UTF-8数据写入UTF-16LE文件?

Given a string of UTF-8 data in PHP, how can I convert and save it to a UTF-16LE file (this particular file happens to be destined for Indesign - to be placed as a tagged text document).

Data:

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

I am using the following code, but to no avail:

file_put_contents("output.txt", pack("S",0xfeff) . $copy);
  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • duanchensou8685 2013-10-26 13:16
    已采纳

    Using the following code, I have found a solution:

    this function changes the byte order (from http://shiplu.mokadd.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;
    }
    

    used with a utf-8 to utf-16LE conversion, it creates a file that will work with indesign:

    file_put_contents("output.txt", pack("S",0xfeff). chbo(iconv("UTF-8","UTF-16LE",$copy));
    
    评论
    解决 无用
    打赏 举报
查看更多回答(2条)

相关推荐 更多相似问题