V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
DreamCMS
V2EX  ›  问与答

求教一个编码问题 php rawurlencode iconv 相关

  •  
  •   DreamCMS · 2016-07-25 16:23:23 +08:00 · 786 次点击
    这是一个创建于 3046 天前的主题,其中的信息可能已经有所发展或是发生改变。
    <?php
    //1
    echo rawurlencode(iconv("utf8", "gbk", '黄金口岸.jpg')); //输出%BB%C6%BD%F0%BF%DA%B0%B6.jpg
    echo '<br/>';

    //2
    echo iconv("gbk", "utf8",rawurldecode('%BBƽ%F0%BFڰ%B6.jpg')); //黄金口岸.jpg
    echo '<br/>';

    //3
    echo '%BBƽ%F0%BFڰ%B6.jpg';
    ?>

    因为上传使用到了中文文件名,上传到底图片大量类似%BBƽ%F0%BFڰ%B6.jpg 这样半乱码图片文件名

    现在因移动后在新服务器( 1 )输出文件现在%BB%C6%BD%F0%BF%DA%B0%B6.jpg 无法匹配到服务器文件夹%BBƽ%F0%BFڰ%B6.jpg 图片,但偶然测试得到( 2 )%BBƽ%F0%BFڰ%B6.jpg 反解析得到黄金口岸.jpg 这个图片中文名。

    ( 3 )'黄金口岸.jpg' -》 ' %BBƽ%F0%BFڰ%B6.jpg'
    如何转移得到?本来服务器使用 rawurlencode(iconv("utf8", "gbk", '黄金口岸.jpg'));可以得到%BBƽ%F0%BFڰ%B6.jpg

    请大家帮帮我看一下
    2 条回复    2016-07-25 20:21:34 +08:00
    DreamCMS
        1
    DreamCMS  
    OP
       2016-07-25 16:25:46 +08:00
    -。- 大神们 帮我瞧瞧
    imn1
        2
    imn1  
       2016-07-25 20:21:34 +08:00
    我一下也说不上什么理论,但 url 不能单纯以字符集编码理解的,不了解的话不要随便用,我一向都避免直接用 urlencode 处理多字节字符
    找到一个说明 http://graphemica.com/%C6%BD 你参考一下,就是“ƽ”这个字符的编码, URL 编码就是%C6%BD
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1081 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 19:57 · PVG 03:57 · LAX 11:57 · JFK 14:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.