結論: 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={検索キーワード}
コメント