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 )
此文獻給和我一樣的菜鳥們 百度編輯器的大神 你們為何讓我們很受傷

浙公網安備 33010602011771號