ソフトウェアはUTF-8ファイルを生成していますが、ユニコードではないファイルにコンテンツを書き込んでいます。そのソフトウェアを変更することはできず、現在のように出力を取得する必要があります。これがここに正しく表示されるかどうかはわかりませんが、ドイツ語のウムラウト「ä」はファイルに「ä」として表示されます。
Notepad ++でファイルを開くと、ファイルがUTF-8(BOMなし)でエンコードされていることがわかります。ここで、メモ帳で「ANSIに変換」と言ってから、ファイルのエンコードをUTF-8に戻すと(変換せずに)、ファイル内のドイツ語のウムラウトは正しいです。Perlでまったく同じ動作を実現するにはどうすればよいですか?今まで何を試しても、ウムラウトの混乱はさらに悪化しました。
複製するには、UTF-8でエンコードされたファイルを自分で作成し、それにコンテンツを書き込みます。
はい、やってみます。自分でUTF-8ファイルを作成し、これを書き込みます:MännerSchüleVöogelSüÃ
次に、UTF-8 mysqlデータベースで、varcharフィールドを使用してUTF8_unicodeエンコーディングのテーブルを作成します。ここで、次のスクリプトを使用します。
use utf8;
use DBI;
use Encode;
if (open FILE, "test.csv") {
my $db = DBI->connect(
'DBI:mysql:your_db;host=127.0.0.1;mysql_compression=1', 'root', 'Yourpass',
{ PrintError => 1 }
);
my $sql="";
my $sql = qq{SET NAMES 'utf8';};
$db->do($sql);
while (my $line = <FILE>) {
my $sth = $db->prepare("INSERT IGNORE INTO testtable (testline) VALUES (?);");
$sth->execute($line);
}
}
ファイルの正確な内容がデータベースに書き込まれます。しかし、私がデータベースに期待する出力は、ドイツ語のウムラウトです。
MännerSchülerVögelSüß
では、どうすればそれを正しく変換できますか?