私は、Perl CGIスクリプトに間違った値をデータベースに書き込ませる原因となった原因を調査しています。perl cgiスクリプトが、投稿されたフォームデータをUTF-8でエンコードされたものとして間違って解釈する原因は何ですか?
このperlスクリプトは、ISO-8859-1エンコーディングを使用している別のシステム(ブラウザではない)からデータを受け取ります。
Gro�Gr�nF�rbung�sterreich
とき、それは私が、私は、スクリプトを修正することにより、このような間違ったデータベースのエントリを作成することができることが判明
GroßGrünFärbungÖsterreich
次のようになります。それはデータベースに書き込まれると、誤ったデータは、次のようになります$xyz
の代わりにdecode('utf8', $xyz)
を使用してください。だから私の質問です:影響はありますか? HTTPヘッダー、環境変数、設定ファイルなど、perl CGIモジュールが暗黙的にこれを行う可能性がありますか?
オリジナルソースコード:いくつかのケースで
my $ack = new CGI;
my $xyz = $ack->param('xyz');
明らかのように振る舞う:
use Encode qw(decode encode);
my $ack = new CGI;
my $xyz = decode('utf8',$ack->param('xyz'));
[captial sz](https://en.wikipedia.org/wiki/Capital_%E1%BA%9E) 'ẞ'がそこにあるのは喜ばしいことです。 :) – simbabque