이 질문은 MySQL (5.5.16) 데이터베이스에 연결된 Tomcat 7 웹 응용 프로그램과 관련이 있습니다. 나는 zip
파일을 열 때zip 파일의 파일 이름에서 파생 된 특수 문자로 작업
, 즉 windows-1252
캐릭터 세트로 인코딩 된 파일 이름을 가지고, 문자는 자바 올바르게 해석하는 것 : 예외가 발생 것 ZipFile를 생성자에서 charset 오브젝트를 생략
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 콘솔 클라이언트에서 볼 수 있듯이). 이전에 웹 응용 프로그램의 특수 문자를 MySQL에 삽입하는 데 문제가 없었습니다. 나는 자바 소스 코드에서 é
과 INSERT를 실행하면
는 :
statement.executeUpdate("insert into files (filename) values ('café.pdf')");
é
는 MySQL의에서 잘 나타납니다.
또한, 내 로그 파일 대신
사람이 여기 일이있을 수 있는지 알고 있나요 é: caf‚.pfd
의 쉼표를 보여줍니다?
MySQL 서버에 대한 연결을 어떻게 열지 않습니까? 어떤 수업/도서관/서비스를 사용합니까? – SkyDan
Java로 MySQL을 연결하려면 driverClassName = "com.mysql.jdbc.Driver"url = "jdbc : mysql : // localhost : 3306/workflow? zeroDateTimeBehavior = convertToNull" – reus
과 함께 javax.sql.DataSource 자원을 사용하십시오. Java 응용 프로그램에서 다음 쿼리를 실행하십시오. 라틴 character_set_connection을 - - 라틴 character_set_database - 라틴 character_set_filesystem - 바이너리 character_set_result - character_set_server - 라틴 character_set_system 해서 character_set_client : '숯불 %'' '문자 %'출력과 같은 – SkyDan