コンテンツへスキップ

javascriptのencodeURI関数は、結果がUTF-8になるのね

2010年1月18日

ルートのWeb.configで下記設定をしている、基本的にShift-JISのWebサイト。ほとんどがhtml。

<globalization requestEncoding="Shift-JIS" responseEncoding="Shift-JIS"/>

jQueryのプラグインを使ってテキストボックスのオートコンプリートをやってるんだけれども、そのプラグインに候補データを提供するために、ASP.NETのジェネリックハンドラ(.ashx)を使って候補リストを渡している。プラグインはテキストボックス値をパラメターにしてashxにGETするんだけれども、ashxの中で受け取ったパラメターがどうも文字化けしてることに気が付いた。

プラグインの中を見てみると、リクエスト用のURLを編集しているところでencodeURI関数を使ってた。

encodeURI関数によってUTF-8でurlエンコードされちゃうので、ashxがUTF-8のリクエストを受け付けられるようにそのashx専用のフォルダーを作って下記内容のWeb.configを置いた。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.web>
    <!--
      jquery.autocompleteでパラメターをurlエンコードするためにencodeURI関数を使ってる。
      この関数はutf-8でurlエンコードしちゃうため、utf-8で受けるようにしてあげる必要がある。
    -->
    <globalization requestEncoding="utf-8" responseEncoding="utf-8"/>
  </system.web>
</configuration>

文字化けしなくなった。

From → jQuery

コメントする

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。