0

データベースに保存するためにperlスクリプトへの入力として渡すロシア語の文字列のセットがありますが、Windowsコンソールで同じ文字列を印刷すると、入力から文字が取得されます。また、データベースには異なる文字が列に挿入されています。問題のヒントをいくつか教えてください。

4

1 に答える 1

1

入力をデコードします。出力をエンコードします。


データベース内のデータのエンコーディングは何ですか?

UTF-8 だとします。次のようなものを使用します。

use Encode qw( decode );
my $row = ...;
$row->{text_field} = decode('UTF-8', $row->{text_field});

コンソールで期待されるエンコーディングは何ですか?

chcpプロンプトで実行しcp、番号の前に追加することで、これに対する答えを見つけることができます。たとえば、使用するエンコーディングが であるマシンではcp437、次の出力が得られます。

>chcp
Active code page: 437

次のようにエンコーディングを処理します。

use open ':std', ':encoding(cp437)';
于 2012-10-16T21:00:33.023 に答える