ホームページ  >  記事  >  バックエンド開発  >  URL に中国語の文字列が含まれる問題を CodeIgniter が解決する方法、codeigniterurl_PHP チュートリアル

URL に中国語の文字列が含まれる問題を CodeIgniter が解決する方法、codeigniterurl_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-12 08:52:39801ブラウズ

CodeIgniter URL に中国語の文字列が含まれる問題を解決する方法、codeigniterurl

codeIgniter のデフォルト設定では、URL に非 ASCII 文字を含めることはできません。URL に非 ASCII 文字が含まれている場合、CI は容赦のないエラー。この記事では、CodeIgniter が中国語の文字列を含む URL の問題をどのように解決するかをプログラマーに紹介します。

この URL で関数 urlencode を使用したらどうなるでしょうか?いいえ。 Web サーバーは URL エンコードされた URL を受信すると自動的にデコードし、PHP で取得した文字列を元の意味に変換し、Web サーバー独自の URL エンコード文字セット (IIS6 中国語版は GBK、Apache 2.2 は UTF) を使用するためです。 -8) がアプリケーションに送信され、CI によって取得された URL がすでにデコードされています。URL が URL エンコードされているかどうかに関係なく、ブラウザはリクエストを行うときに自動的にそれを検出し、エンコードが自動的に実行されます。したがって、手動で URL コーディングを行っても問題は解決されません。では、この問題を解決するにはどうすればよいでしょうか?

CI のようなフレームワークの場合、私の観点は、それを変更するのではなく、それを拡張することです。CI は、application/core/ (バージョン 2.0 より前) にそれを使用するだけで済みます。ファイル MY_URI.php を application/libraries/) に次の内容でコピーします:

リーリー

中国語の URL が検出を通過できるように、元の CI_URI の _filter_uri メソッドをオーバーライドしました。ただし、URL にスペースが含まれている場合は機能しません。 urlencode はスペースを + に変換することが判明しましたが、CI のデフォルト設定では URL に + を含めることはできません。OK、

を入れてください。 リーリー

に変更されました リーリー

以上です。

または

最初のステップは、config.php の

を変更することです リーリー

に置き換えます リーリー

上記の操作はすべて完了しましたが、URL で取得した中国語の情報が文字化けするという新たな問題が発生する可能性があります。サーバー上でこの問題が発生するかどうかはわかりませんが、IIS で発生しました。 )。ただし、ローカルでは正常であり、ローカルでは apache が使用されます。

さて、プログラム内の $_SERVER['REQUEST_URI'] を出力してみたら文字化けしていました。何が起こっているのでしょうか?これは、uri 内のパラメータを取得する前に、パラメータがエンコードされていることを意味します。iconv を使用してデコードします。 リーリー

これを印刷して確認してください。元の中国語パラメータが印刷されており、それらは正しいです。

この問題は解決されましたが、まだ疑問があります。URL が gb2312 でエンコードされているのはなぜですか? それがプログラムで使用されている場合 (utf-8 エンコードを使用しています)、utf-8 エンコードにも変換する必要があります。それはWebサーバーに関連しているのと同じです。回答していただければ幸いです。

元のアドレス: http://www.manongjc.com/article/808.html

codeIgniter 関連の資料:

    CodeIgniter URL
  • CodeIgniter コントローラー
  • CodeIgniter の予約名
  • CodeIgniter ビュー
  • CodeIgniter モデル
  • CodeIgniterヘルパー関数
  • CodeIgniter クラス ライブラリ
  • CodeIgniter がクラスライブラリを作成します
  • CodeIgniter ドライバー
  • CodeIgniter がドライバーを作成します
  • CodeIgniter コアクラス
  • CodeIgniter 補助クラス
  • CodeIgniter フック
  • CodeIgniter が自動的にロードされます
  • CodeIgniter パブリック関数
  • CodeIgniter互換機能
  • CodeIgniter URI ルーティング
  • CodeIgniter エラー処理
  • CodeIgniter Web キャッシュ
  • CodeIgniter アナライザー クラス
  • CodeIgniter CLI モードを実行する
  • CodeIgniter 管理アプリ
  • CodeIgniter は複数の環境を処理します
  • CodeIgniter の代替構文
  • CodeIgniter セキュリティ
  • CodeIgniter開発仕様
  • codeigniterルーティング(URL)最適化分析と解説
  • CodeIgniterフレームワークを使用してURLからindex.phpを削除する方法

http://www.bkjia.com/PHPjc/1125999.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/1125999.html技術記事 URL に中国語の文字列が含まれる問題を CodeIgniter が解決する方法 codeigniterurl codeIgniter のデフォルト設定では、URL に非 ASCII 文字が含まれる場合、CI は...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。