この質問は、MySQL (5.5.16) データベースに接続されている Tomcat 7 Web アプリケーションに関するものです。
zip
charset でエンコードされたファイル名を持つファイルを開くとwindows-1252
、文字は Java によって正しく解釈されるようです。
ZipFile zf = new ZipFile( zipFile, Charset.forName( "windows-1252" ) );
Enumeration entries = zf.entries();
while( entries.hasMoreElements() ) {
ZipEntry ze = ( ZipEntry ) entries.nextElement();
if( ! ze.isDirectory() ) {
String name = ze.getName();
System.out.println( name ); //prints correct filenames, e.g. café.pdf
}
}
ZipFile コンストラクターで Charset オブジェクトを省略すると、例外が発生します。zip ファイル内のファイル名は、分音符号を含めて標準出力に正しく出力されます。しかし、後でファイル名をデータベースに保存しようとすると、e-acute が疑問符に置き換えられます (mysql コンソール クライアントで見られるように)。以前は、Web アプリケーションから MySQL に特殊文字を挿入する際に問題はありませんでした。
é
Java ソース コードでINSERT を実行すると、次のようになります。
statement.executeUpdate( "insert into files (filename) values ('café.pdf')" );
これé
はMySQLでうまく表示されます。
また、私のログファイルには、代わりにコンマが表示されますé: caf‚.pfd
ここで何が起こっているのか知っている人はいますか?