此問題涉及連接到MySQL(5.5.16)數據庫的Tomcat 7 Web應用程序。使用從壓縮文件中的文件名派生的特殊字符
當我打開一個zip
文件,已在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
}
}
忽略的zip文件的構造函數的字符集對象會導致異常 。 壓縮文件中的文件名被正確輸出到標準輸出,包括變音符號。 但是,當我隨後嘗試將文件名存儲在數據庫中時,e-acute被替換爲問號(如使用mysql控制檯客戶端所看到的)。 我沒有問題從Web應用程序插入到MySQL之前的特殊字符。
當我執行與Java源代碼é
一個INSERT:
statement.executeUpdate("insert into files (filename) values ('café.pdf')");
的é
下都很MySQL中。
而且,我的日誌文件顯示了一個逗號,而不是é: caf‚.pfd
有誰知道什麼可能會發生在這裏?
如何打開與MySQL服務器的連接?你使用什麼類/庫/服務? – SkyDan
要連接Java與MySQL我使用javax.sql.DataSource資源與:driverClassName =「com.mysql.jdbc.Driver」url =「jdbc:mysql:// localhost:3306/workflow?zeroDateTimeBehavior = convertToNull」 – reus
請,從Java應用程序執行以下查詢。向我們展示了輸出:'顯示的變量,比如 '字符%'' – SkyDan