fckeditor_PHP チュートリアルでアップロードした画像が文字化けする問題の解決方法

WBOY
リリース: 2016-07-13 10:55:07
オリジナル
878 人が閲覧しました

phpチュートリアル中国語文字化け

中国語名が文字化けする理由:
FCKeditor は UTF-8 エンコーディングを使用します
たとえば、お使いのマシンが Windows システムの場合
ファイル名には GBK エンコードが使用されています
アップロードする際、エンコードをUTF-8からGBKに変更する必要があります


==>最初のアイデアであるトランスコーディングのアイデアでは、2 つのファイル (最初のファイル) を変更する必要があります:
.fckeditoreditorfilemanagerconnectorsphpcommands.php ファイル

内部にはFileUpload関数があります:

move_uploaded_file( $oFile['tmp_name'], $sFilePath ) ;

に変更します move_uploaded_file( $oFile['tmp_name'], iconv("utf-8","gbk",$sFilePath) ) ;

----------

2番目のファイル:

.fckeditoreditorfilemanagerconnectorsphputil.php ファイル

ConvertToXmlAttribute 関数を見つけます:

は次のようになります: return ( utf8_encode( htmlspecialchars( $value ) ) ) ;

次のように変更します: return iconv("GBK", "UTF-8", htmlspecialchars( $value ));

==> 2 番目のアイデアは、アップロードされたファイルの名前を変更することです。

次のように変更する必要があります:

.fckeditoreditorfilemanagerconnectorsphpcommands.php ファイル内

FileUpload 関数を見つけます: $sFileName = $oFile['name'];

次のように変更します:

//----------------------------------------------- --- ---------------

//アップロードファイルの中国語文字化けを修正する方法2:(アップロードファイルの名前を変更する)
$sFileName = "sda.php";
$sオリジナルファイル名 = $sファイル名;
$sExtension = substr($sFileName, (strrpos($sFileName, '.') + 1));//拡張子を検索します
$sExtension = strto lower($sExtension);
$sFileName = date("YmdHis").rand(100, 200).".".$sExtension;
//------------------------------------------------ ---------------

個人的には、最初の方法がかなり良いと思います。

Javaバージョン

FCKeditor2.4.3を使用する場合、アップロードされた画像またはフラッシュファイル名が中国語である場合、次の状況が発生します:

質問 1:
「画像の挿入・編集」または「Flashの挿入・編集」ボタンをクリックすると、ポップアップダイアログボックスでアップロードボタンを選択します。アップロードしたファイル名が中国語の場合、文字化けが発生します。
解決策:
SimpleUploaderServlet.java に次の変更を加えます:
プログラム内で DiskFileUpload Upload = new DiskFileUpload() を見つけて、この行の下に
を追加します。 アップロード.setHeaderEncoding("UTF-8")
質問 2:
[画像の挿入/編集] または [Flash の挿入/編集] ボタンをクリックするときは、ポップアップ ダイアログ ボックスの [参照] を使用します
サーバーボタンで中国語ファイルをアップロードすると文字化けが発生します。
解決策:
問題 1 の解決策は基本的に同じですが、ConnectorServlet.java に追加する必要がある点が異なります
.setHeaderEncoding("UTF-8") をアップロードするだけです。
質問 3:
[画像の挿入/編集] または [Flash の挿入/編集] ボタンをクリックして、ポップアップ ダイアログ ボックスで [参照] をクリックします
このページの「新しいフォルダーの作成」ボタンを使用する場合は、「サーバー」ボタンをクリックすると、「サーバーの参照」ページが表示されます
中国語ディレクトリを作成すると、中国語ディレクトリが文字化けします。
解決策:
Web コンテナのエンコーディングは、FCKeditor のデフォルトのエンコーディング UTF-8 と一致している必要があります。Tomcat を使用している場合は、それを変更する必要があります
Tomcatサーバーのconfディレクトリにあるserver.xml。以下の通り:

<コネクタポート="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
tutorial="false " redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="utf-8" /> <コネクタポート="8009"
enableLookups="false" redirectPort="8443"protocol="AJP/1.3" URIEncoding="utf-8"/>

実際には、本来のutf-8にURIEncodingの属性値を追加することになります。

FCKeditor2.4.3を使用している場合、アップロードされた画像またはフラッシュファイル名が中国語である場合、次のような状況が発生しました:
質問 1:
「画像の挿入・編集」または「Flashの挿入・編集」ボタンをクリックすると、ポップアップダイアログボックスでアップロードボタンを選択します。アップロードしたファイル名が中国語の場合、文字化けが発生します。
解決策:
FCKeditor.java 解凍パッケージの src ディレクトリで SimpleUploaderServlet.java を見つけて、次の変更を加えます。 プログラム内で DiskFileUpload Upload = new DiskFileUpload() を見つけて、この行の下に
を追加します。 Upload.setHeaderEncoding("UTF-8") をクラス ファイルに再コンパイルし、WinRAR を使用してクラス ファイルを変換します
これを FCKeditor-2.3.jar 内の対応する場所に追加し、Web プロジェクト内の元の jar パッケージを上書きします。
質問 2:
[画像の挿入/編集] または [Flash の挿入/編集] ボタンをクリックするときは、ポップアップ ダイアログ ボックスの [参照] を使用します
サーバーボタンで中国語ファイルをアップロードすると文字化けが発生します。
解決策:
問題 1 の解決策は基本的に同じですが、ConnectorServlet.java に追加する必要がある点が異なります
.setHeaderEncoding("UTF-8") をアップロードするだけです。
質問 3:
「画像の挿入/編集」または「Flashの挿入/編集」ボタンをクリックすると、ポップアップダイアログボックスで「参照」をクリックします
このページの [新しいフォルダーの作成] ボタンを使用する場合は、[サーバー] ボタンをクリックすると [サーバーの参照] ページが表示されます。 中国語ディレクトリを作成すると、中国語ディレクトリが文字化けします。
解決策:
Web コンテナのエンコーディングは、FCKeditor のデフォルトのエンコーディング UTF-8 と一致している必要があります。Tomcat を使用している場合は、それを変更する必要があります
。 Tomcatサーバーのconfディレクトリにあるserver.xml。以下の通り:


<コネクタ ポート = "8080" maxHttpHeaderSize = "8192"

maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="utf-8" />
<コネクタポート="8009"
enableLookups="false" redirectPort="8443"protocol="AJP/1.3" URIEncoding="utf-8"/>


実際には、本来のutf-8にURIEncodingの属性値を追加することになります。 注: 質問 3 については、サーバー上の他のプロジェクトに影響を与えるため、この解決策はサーバーのエンコードを変更しないことをお勧めします。このコーディングの問題を解決するには、ソース コードを変更するか、それを処理するクラスを書き直すことができます。開いたアップロード参照ダイアログ ボックスを観察すると、アップロードされたファイル名の処理を担当する対応する htm ページと com.fredck.FCKeditor.uploader クラスが見つかり、対応するパラメータを見つけてエンコードを変換できます。例: 文字列


newFolderStr=request.getParameter("新しいフォルダー名");

newFolderStr=new String(newFolderStr.getBytes("iso8859-1"),"utf-8");

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


fckeditor みんながやり遂げたら1!そうすると、削除機能は提供されていないと考えるべきです。 !

以下は、feckeditor を呼び出す JSP チュートリアル ページに配置された JS の一部です

関数 FCKeditor_OnComplete( editorInstance )
{
editorInstance.Events.AttachEvent( 'OnBlur', onEditorBlur ); }

関数 onEditorBlur(){
var imgs = FCKeditorAPI.GetInstance('EditorDefault').EditorDocument.body.all.tags("img"); for(var i=0; i fckeditor_PHP チュートリアルでアップロードした画像が文字化けする問題の解決方法 アラート(imgs[i].src);



//ここでは、隠しドメインを使用してこれらのパス情報を受信できます
}

}

これらのパス情報をデータベースチュートリアルのフィールドに入力し、ドキュメントを削除するときに一緒に削除すると、画像保持の問題を解決できます

================================================= ======================================
上下のスクロール バーの表示を回避します:


次の 2 つの文を fckconfig.js に追加します:

FCKConfig.Plugins.Add( 'autogrow ' ) ; FCKConfig.AutoGrowMax = 4000 ; //これは自動拡張に許可される最大高さの制限です

同時に、このディレクトリが fckeditoreditorpluginsautogrow に存在することを確認してください。存在しない場合は、公式 Web サイトにアクセスして FCK の最新バージョンをダウンロードしてください。


FCKConfig.PluginsPath のパスが正しく設定されているかどうかにも注意してください。
================================================= =========================

FCKConfig.PluginsPath = FCKConfig.BasePath + 'plugins/' ;
これは正しいです。システムのデフォルトのパスです。FCK は問題なく使用できます

高さを自動的に調整することはできません

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

FCKConfig.PluginsPath = FCKConfig.BasePath + 'plugins/' ;
これはjsでのステートメントです。 BasePath はここでは設定されません。php で FCK を呼び出すときに設定されます。


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

動作しない場合は、FCK のソースコードを変更したことがありますか?

ファイルを再ダウンロードし、これらの 2 行のみを変更してテストできます。要求した内容を達成するために他に何も変更する必要はありません。

FCKConfig.Plugins.Add( 'autogrow ' ) ; FCKConfig.AutoGrowMax = 4000 ;


質問2

FCKeditor中国語文字化け問題

FCKeditor を使用すると、中国語の文字化けが発生する主な場所は 3 つあります:

①「サーバーの参照」ページで新規ディレクトリを作成する場合

問題: [画像の挿入/編集] または [Flash の挿入/編集] をクリックすると、[画像のプロパティ] または [Flash のプロパティ] ダイアログ ボックスが表示され、その中の [サーバーの参照] ボタンをクリックすると、 「サーバーの参照」ページで中国語名のディレクトリを作成すると文字化けが発生します。

解決策: Web コンテナの文字エンコーディングを変更します。 FCKeditorのデフォルトの文字コードはUTF-8であるため、Webコンテナの文字コードもUTF-8に変更されます。 Web コンテナが Tomcat を使用している場合は、ファイル %CATALINA_HOME%/conf/server.xml を開いて次のように変更します。

<コネクタ

ポート = "8080"

リダイレクトポート="8443"

MinSpareThreads = "25"
接続タイムアウト = "60000"

接続リンガー = "-1"
サーバーSoTimeout = "0"
maxSpareThreads="75"
maxThreads="150"
tcpNoDelay="true"
maxHttpHeaderSize="8192"
IEncoding="UTF-8"> <コネクタ
ポート = "8009"
リダイレクトポート="8443"
プロトコル="AJP/1.3"
IEncoding="UTF-8">


②「サーバー参照」ページでファイルをアップロードする場合

問題点:①と同様に開いた「サーバー参照」ページで中国語名のファイルをアップロードすると文字化けが発生します。

解決策: プロジェクト WebRoot 内のファイル /editor/filemanager/browser/default/frmupload.html を開き、head にメタを追加します。
③「画像のプロパティ」または「Flashのプロパティ」ダイアログボックスでファイルをアップロードする場合

問題: [画像の挿入/編集] または [Flash の挿入/編集] をクリックすると、[画像のプロパティ] または [Flash のプロパティ] ダイアログ ボックスが表示され、[アップロード] タブをクリックし、[参照...] をクリックします。 」ボタンをクリックし、中国語名のファイルを選択して「サーバーに送信」ボタンをクリックすると、アップロードしたファイル名が文字化けします。

解決策: FCKeditor.Java ソース コードを変更します。 Eclipse を通じてソース コードを変更してから、jar ファイルに再パッケージ化する方が便利です。 Eclipse で新しい Web プロジェクト FCKeditor-java-2.3 を作成します。FCKeditor.Java の WebRoot ディレクトリ名は web であるため、新しいプロジェクトを作成するときは WebRoot ディレクトリ名も web にすることをお勧めします。 FCKeditor.Java 内の対応するディレクトリをプロジェクトにコピーします。 src で ConnectorServlet.java と SimpleUploaderServlet.java の 2 つのファイルを見つけ、それぞれの 2 つのファイル内で DiskFileUpload Upload = new DiskFileUpload(); を見つけ、それらの後に Upload.setHeaderEncoding("utf-8"); を追加します。次に、Tomcat インストール ディレクトリの /server/lib にある catalina-ant.jar をプロジェクトの /WEB-INF/lib にコピーします。 build.xml を開き、プロパティ名 = "catalina.home" を Tomcat インストール ディレクトリに変更します。 taskdef name="deploy"、taskdef name="list"、taskdef name="reload"、taskdef name="undeploy" を次のように変更します。

taskdef name="deploy" classname="org.apache.catalina.ant.DeployTask"> <クラスパス refid="compile.classpath"> <クラスパス refid="compile.classpath"> <クラスパス refid="compile.classpath"> <クラスパス refid="compile.classpath">

次に、Eclipse のアウトライン ウィンドウで Ant の dist を実行すると、新しい FCKeditor-2.3.jar が生成されます。 FCKeditor を使用しているプロジェクト内の FCKeditor-2.3.jar をこの新しいものに置き換えます。

アップロード失敗の問題

サーバー側の理由はここでは考慮されません。最初に、web.xml の SimpleUploader サーブレットの構成でパラメータ Enabled が false に設定されているかどうかを確認します。

さらに、FCKeditorはweb.xml内のSimpleUploaderのパラメータbaseDirで指定されたディレクトリを自動的に作成します。 「サーバーの参照」ページを介してファイルをアップロードする場合、baseDir に対応するイメージまたはフラッシュ ディレクトリがない場合、「アップロード」の「サーバーに送信」ボタンを使用してファイルをアップロードする場合、FCKeditor はイメージまたはフラッシュ ディレクトリを自動的に作成します。このとき、baseDir 配下に対応する Image または Flash ディレクトリがない場合、FCKeditor はエラーを報告します。この場合、baseDir 配下に新しい Image または Flash ディレクトリを手動で作成する必要があります


要約すると、jsp、php、asptutorial.netの問題のいずれであっても、次のように分析する必要があります
はい、これは中国語のエンコードの問題です。解決するには 2 つの方法があります

fck

の対応するファイルのソースコードを変更する必要があります 1 中国語名の文字列を変換してエンコードします

2 ファイル名を英語と数字に変更します

コードを見ていなくてファイル名を忘れてしまいましたが、バージョンによって若干違うようです、調べれば分かるはずです


http://www.bkjia.com/PHPjc/632286.html

www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/632286.html

技術記事

PHP チュートリアルの中国語名が文字化けする理由: FCKeditor は UTF-8 エンコーディングを使用しており、私のマシンでは Windows システム ファイル名などは GBK エンコーディングを使用しているため、アップロード時にエンコーディングを UT から変更する必要があります...

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート