zoukankan      html  css  js  c++  java
  • ueditor 1.4.3 gbk asp 上传中文乱码 终极解决方法 ie6 ie8 也适用

    [摘要:百度编纂器1.43 gbk asp 题目 1.firefox3.0下 单图上传 面没有了 面多图上传 中央的蓝色按钮(即 面击挑选图片)没有表现(附件上传出那个题目) 没有晓得我的水狐吃翔了 致使上面测试只要 谷歌]

    百度编辑器1.43 gbk asp 问题


    1.firefox3.0下    


    单图上传 点不了
    点多图上传  中间的蓝色按钮(即 点击选择图片)不显示(附件上传没这个问题)


    不知道我的火狐吃翔了 导致下面测试只有  谷歌 360 ie8 ie6


    2. 默认情况下 (就是什么设置都没动 直接在iis跑)




    1)在 谷歌 360极速模式   功能:多图 附件  (单图上传反而没问题)




     出现 部分中文(文件名)乱码 导致有时上传不了


     例如  稿.gif 






    2)ie8 ie6下  功能:单图 多图 附件 


    中文 文件名的 直接都传不了 






    没办法自己找原因  网上大神都很忙  没人理会我们还在使用asp的菜鸟屌丝


    =================================================================================================
    分析了一下 :


    后台asp 看了下 都是gbk应该没什么问题  直接把2进制那边直接显示就是乱码 所以应该是前台的问题




    单图上传  是 multipart/form-data  iframe 


    多图 附件上传 好像是用的     支持html5的浏览器 ( XMLHttpRequest+FormData+等等)否则就是  flash  


    ====================================================================================================================
    先处理谷歌 360的问题  因为方便调试   (对于flash上传为啥会“部分”中文出错,能力有限没明白希望知道的留言告知)


    解决: 我想到是在给flash之前 就把文件名 给编码   然后在对返回的json里的文件名解码


    1)编码


    找啊找啊 找到了  third-party/webuploader/webuploader.js  
    行2234  this.name = escape(source.name)


    由于编辑器加载的是webuploader.min.js  
    所以要这里 搜索 this.name=a.name||"Untitled"    改成this.name=escape(a.name)||"Untitled"


    2)解码


    dialogs/image/image.js 多图 
    行778 title: unescape(data.title),
    行779    alt: unescape(data.original),


    dialogs/attachment/attachment.js 附件 
    行558  title: unescape(data.original) || link.substr(link.lastIndexOf('/') + 1),

    行742  var title = unescape(lis[i].getAttribute('data-title')) || url.substr(url.lastIndexOf('/') + 1);





    务必清除历史记录后测试
    到这里 ie6 8的多图 附件上传也一样都可以了

    ===============================================================================================

    针对360 极速模式(6.3) 上面修改并不能有效  狗日的360上传始终是utf-8 而且好像不让修改filename 倒置这个还是乱码 谷歌就没这个问题蛋疼
    解决:我是在后端做文章Uploader.Class.asp 95行下面加


    Dim otherfilename
    otherfilename = rsFormValues.Item( "name" )
    if otherfilename<>"" then filename=otherfilename


    这么改的目的是  多图 附件 前端上传的时候 附带一个额外的name字段 储存的就是文件名 这里编码过的 所以用他代替吧   因为单图上传没这个所以判断下不等于空

    =====================================================================================================

    ie6 ie8 单图上传 中文乱码解决


    iframe这种玩意 在ie解析默认什么编码?反正不会继承父级的gbk  这是倒置乱码的关键


    然后我找到了单图上传的js代码


    行24405    ueditor.all.js   这里是单图上传的开始  读了代码
    点击单图上传 构造里了一个iframe 里面有 
    1)form multipart/form-data  input file
    2)又一个 iframe  行24432   
    我开始尝试了各种方法   
    在form做文章 不行 
    然后又在iframe里 head之间加<meta http-equiv="Content-Type" content="text/html;charset=gbk"/> 还是不行
    知道肯定是这的问题  所有都集中在 主iframe上 一直忽略了   行24432 的iframe 
    也同样用js在其 head之间加<meta http-equiv="Content-Type" content="text/html;charset=gbk"/> 还是不行
    找啊找啊找啊  谷歌被屏蔽后 一直在用百度 想死的心都有  
    解决:最终认为是两个iframe  ie下都必须指定编码
          所以分别在 两个iframe上用上了document.charset="gbk"
    行24423    ueditor.all.js     下面加一句 
    btnIframeDoc.charset="gbk";
    行24449    ueditor.all.js     var iframe = btnIframeDoc.getElementById('edui_iframe_' + timestrap);

         下面加 
          var iframedoc = (iframe.contentDocument || iframe.contentWindow.document);
          iframedoc.charset="gbk";

    由于编辑器最终用的是ueditor.all.min.js
    搜索 n=g.contentDocument||g.contentWindow.document;  在其后面加 
    n.charset="gbk";
    搜索 r=n.getElementById("edui_iframe_"+a) 在其后面和分号之间加(有个逗号)  


    ,iframedoc=(r.contentDocument||r.contentWindow.document);iframedoc.charset="gbk"


    ================================================================================================

    另外如果这个用在虚拟空间上 Uploader.Class.asp 211行 改成这样  On Error Resume Next:fs.CreateFolder( path )

    此文献给和我一样的菜鸟们    百度编辑器的大神 你们为何让我们很受伤

  • 相关阅读:
    php基础:函数定义和时间戳函数
    php基础:函数
    http协议基础
    laravel基础②
    laravel基础①安装、配置虚拟主机
    composer
    git基础⑤远程仓库
    windows+caffe(一)——自己环境
    caffe问题集锦
    使用cygwin出现syntax error near unexpected token'$'do
  • 原文地址:https://www.cnblogs.com/changbin/p/6225285.html
Copyright © 2011-2022 走看看