楽天の店舗内検索のキーワードが文字化けする

結論: formは文字コードをEUC-JP。直リンクは文字コードをUTF-8に。

以下が対策方法です。

ページの文字コードを変更する

ページ全体に設定できる場合は、head内のmetaに以下を設定すればよいです。

<head>
    <meta charset="euc-jp">
</head>

ただし一般的にWebページで使われる文字コードはutf-8が使われることが多いため、ページ内の他の部分に影響する可能性があります。

form送信時の文字コードを変更する

formタグにaccept-charsetを設定します。 これはサーバが受け入れ可能な文字コードを指定すると、入力したデータをその文字コードに変更して送るというものです。 今回の場合は、UTF-8の文字を楽天に送信時にEUC-JPに変更しています。

楽天さんが例に出しているHTMLコードで実装例を示します。

<form method="get" action="https://esearch.rakuten.co.jp/rms/sd/esearch/vc">
<input type="hidden" name="sv" value="6">
<input type="hidden" name="sid" value="●(店舗ID)">
<input type="hidden" name="su" value="▲(店舗URL)">
<input type="hidden" name="sn" value="■(店舗名)">
<input type="text" name="sitem">
<input type="hidden" name="f" value="A">
<input type="submit" value="商品検索">
</form>
<form method="get" action="https://esearch.rakuten.co.jp/rms/sd/esearch/vc" accept-charset="EUC-JP">
<input type="hidden" name="sv" value="6">
<input type="hidden" name="sid" value="●(店舗ID)">
<input type="hidden" name="su" value="▲(店舗URL)">
<input type="hidden" name="sn" value="■(店舗名)">
<input type="text" name="sitem">
<input type="hidden" name="f" value="A">
<input type="submit" value="商品検索">
</form>

リンクを指定する場合

文字コードにUTF-8を使っている場合、以下のURLを使用すれば文字化けなく検索可能。 https://search.rakuten.co.jp/search/mall/{検索キーワード}/?sid={店舗ID}

※文字コードがSJISやEUC-JPの場合は、このリンクでは文字化けしてしまうので注意。その場合以下の対策をとること。

SJISの場合

検索キーワードをEUC-JPにエンコードする。

EUC-JPの場合

以下のURLを使用する。

https://esearch.rakuten.co.jp/rms/sd/esearch/vc?sv=6&sid={店舗ID}&su={店舗URL}&sn={店舗名}&f=A&sitem={検索キーワード}

コメント

タイトルとURLをコピーしました