0

PHP 从图像文件的元数据创建文本,将其存储在 IMG 源的同名变量中。没问题

JavaScript 显示画廊以显示图像、滚动和放大。
在放大过程中,它从源属性给出图像的描述,但总是在每个字符后显示带有 � 的文本。但是 PHP 没有。

我已经尝试过编码,您将从 code & & echo header("Content-Type: text/html; charset=ISO-8859-1"); 中看到。

PHP:

    $path = "gallery/";
    $objs = new RecursiveIteratorIterator(new 
    RecursiveDirectoryIterator($path), 
    RecursiveIteratorIterator::SELF_FIRST);
    $num = 0;
    foreach ($objs as $pic){
        $pic = str_replace('gallery/', '', $pic);
        if ($pic == '..' or $pic == '.'){
            continue;
        }
        $exif = exif_read_data("$DIR/gallery/$pic", 0, true);
        $pic = str_replace('.JPG', '', $pic);
        ${$pic} = $exif['IFD0']['Comments']; ///// php Variable
        echo "<script> var $pic = '".$exif['IFD0']['Comments']."'; 
              var $pic = utf8_encode($pic);</script>"; 
        // JS of variable of same name.
    }
Sloppy but Works

JQuery:
    $('#mSide').on('click',function(){
        var src = $('#mPic').attr('src');
        var v = src.replace('/gallery/','');
        v = v.replace('.JPG','');
        v =  unescape(encodeURIComponent(v));
        $('#fullPic').show();
        $('#fullPic').append('<img class=\"fPic\" src=\"'+src+'\" 
    height=\"90%\" widdth=\"90%\" style=\"margin-left:0px;\" />');
        $('#fullPic').append('<span id=\"picSummary\" 
    style=\"color:#FFFFFF;\" >testing <textarea > '+  window[v] +'</textarea> 
    </span>');
        $('#fullPic').prepend('<input class=\"closeFullP headr\" 
   value=\"Close\" READONLY><br class=\"closeFullP\">');
   }); 

Sloppy but Works and window[v] 是调用

应显示:这是新的 val = 注意:此电子邮件可能包含法律特权和/或机密信息。如果您不是预期的收件人,特此通知您,严禁传播此消息的内容。如果您错误地收到此邮件,请立即通过############ 通知发件人并删除此电子邮件及其附件的所有副本。

不是:N.O.T.I.C.E.:“T.h.i.s..e.--m.a.i.l..m.e.s.a.g是的'e.g.e.d.'a.n.d./.o.r.'c.o.n.f.i.d.e.n't.i.a.l'我不会呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃…… …………

4

1 回答 1

1

永远不要使用utf8_encode(),否则utf8_decode()他们会做出可怕的假设并愉快/默默地破坏您的数据。始终使用允许您明确指定输入和输出编码的函数。

您从 EXIF 中提取的数据被编码为 UTF16-LE,而您的页面是……别的东西。我不知道是什么,您可能应该弄清楚并保持一致。

推荐阅读:UTF-8 一路通

如果您的页面编码为 ISO-8859-1:

$proper = mb_convert_encoding($input, 'ISO-8859-1', 'UTF-16-LE');

如果您的页面编码为 UTF-8:

$proper = mb_convert_encoding($input, 'UTF-8', 'UTF-16-LE');

参考:https ://secure.php.net/manual/en/function.mb-convert-encoding.php

于 2019-02-01T22:57:22.360 回答