Re: JDBC to load UTF8@psql to latin1@mysql
От | Emi Lu |
---|---|
Тема | Re: JDBC to load UTF8@psql to latin1@mysql |
Дата | |
Msg-id | 50CB3274.2080303@encs.concordia.ca обсуждение исходный текст |
Ответ на | Re: JDBC to load UTF8@psql to latin1@mysql (Tom Lane <tgl@sss.pgh.pa.us>) |
Ответы |
Re: JDBC to load UTF8@psql to latin1@mysql
Re: JDBC to load UTF8@psql to latin1@mysql |
Список | pgsql-general |
>> Yeah, I agree this is the right answer here, since you're using JDBC. By >> the time you get a String from the MySQL driver, it's already in Java's >> 2-bytes-per-char format. And the Postgres driver will deal with the >> encoding on the output side. So the code I provided won't help you. I'm >> afraid I don't know about Mybatis, but if it's built on JDBC I'd think >> you've just got a configuration problem with what encoding the client >> expects at either end. > From: Tom lane > I was wondering if the problem wasn't lots simpler than that. Is the > character the OP is trying to convert actually part of LATIN1? First, the data loading is from psql(unix) to mysql(Unix). Second, DB transactions are through JAVA+MyBatis. Steps: (1) Read utf8.data@psql from psql.xml into java.ArrayList<Bean> (2) For each list.rec, save into mysql@latin through mysql.xml Tried "jdbc:mysql://.../mysql_db?...unicode...encoding...=ISO..." No. This does not work. For now, through the following method, all letters are correctly transformed except "È". What does OP stand for? Emi -- public static String utf8_to_latin1(String str) throws Exception { try { if(str.indexOf("È")>=0) { str = str.replaceAll("È", "E"); } byte[] convertStringToByte = str.getBytes("UTF-8"); str = new String(convertStringToByte, "ISO-8859-1"); return str; }catch(Exception e) { log.error("utf8_to_latin1 Error: " + e.getMessage()); log.error(e); throw e; } }
В списке pgsql-general по дате отправления: