【Java】【HTML】特定の文字をサーバにPOSTすると、あるブラウザでPOSTしたときだけ違う文字に書き換えられる件について
「テキストボックスやテキストエリアに文字を入力してサーバにPOSTするとき、リクエストを送るブラウザによってサーバ側が受け取る文字(正確には「文字コード」)が変わる」
というケースを発見したっていうか実際に遭遇した。
これはちょっと前にツイッターでつぶやいた以下の内容に端を発し、事象を追求していく中でわかった事実である
unicodeの私用領域付近のコードをサーバにPOSTすると、サーバ側で受け取るコードがブラウザによって変わるという、謎の現象の話を聞いた。ホントかよと思い簡単なアプリ作って実験してやるぜと思ってたら半日が過ぎていた。真面目に仕事しないとな…(′・ω・`)
— rmブランクスラッシュ(rm) (@rm_blank_slash) 2017年7月26日
これが、どういう理由や背景があるものなのかわからないが、
こういう、「サーバ処理に届く前に値を書き換えられる」というようなことやられると、
基本サーバ側で待ち構えているプログラムでは手の出しようがなくなるので、ちょっと困る。
(自分たちが作った範囲以外で起きる事象に対する動作保障はできない、というのが一般的な見解だ…昨今はそれが通じないことも多いが)
とりあえず実験してわかった範囲での記録をここに挙げていく。
※実験の過程で、WikipediaのUnicodeのページを参考にさせていただいた。
https://ja.wikipedia.org/wiki/Unicode
以後「Wikipedia」でという記述が合ったら上記のリンク先のページがそれだと解釈していただきたい。