share facebook facebook twitter menu hatena pocket slack

2012.04.02 MON

自サイトの文字コードとは異なる文字コードでPOST送信

櫛田 草平

WRITTEN BY 櫛田 草平

こんにちは。
職人見習いの高嶋です。

FORM HTMLについての記事になります。
難しい内容ではないのですが、今後の為に記事として残しておきます。

ある案件の開発で、自サイトはUTF-8で構築していたのですが、某社のクレジットカード決済APIを
使うにあたり、Shift_JISのPOST送信で接続する必要がありました。

>

勿論、力技で対応することも可能ですが、これが意外と面倒です。
GETでの送信を許してくれているなら、プログラム内でShift_JISに変換とURIエンコードをかけて
某社APIに投げれば済むのですが、POST送信限定というところがまた頭を悩ませられます。

当たり前の話ですが、POSTでリダイレクトすることは出来ません。
UTF-8で統一してサイトを構築しているのに、接続ページだけShift_JISで書くのもいい気分がしません。

そこで、調べてみたら下記のようにありました。

accept-charsetに渡したい文字コードを指定すると、その文字コードで送信します。
しかし、これで解決するならば良いのですが、まだ問題があります。

まず、formタグにそのままaccept-charsetを記述しても、IEの場合は無視されます。
その為、JavaScriptを駆使して以下のように記述するとIEでも認識することができます。







送信ボタンを押した時にJavaScript側で強制的にフォームの文字コードをShift_JISに設定します。

しかし、ここでまた問題があり、遷移先のページからブラウザbackすると、
元ページが文字化けしてしまいます。

結論として、文字コードの異なる他システムとの連携はウインドウを新しく立ち上げるようにします。

※この記事は、なかの人(piro556)が書いています。

櫛田 草平

櫛田 草平

cloudpackで運用、保守、構築、夜間対応を担当しており、日々様々な課題に対応していますのでこの経験を記事にしていけたらと思います。 櫛田 草平

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。