2010-05-14 3 views
4

RSS 채널에서 데이터를 가져와 위생적으로 처리하고 데이터베이스에 저장합니다. 나는 자바, 깔끔한, MySQL과 JDBC를 사용한다.인코딩 문제 wirh JDBC 및 MySQL

단계 :

  1. 나는 RSS-기록을 잡아. 괜찮아.
  2. HTML을 깔끔하게 정리합니다. 다음은 하나의 변환입니다. Tidy는 "& # 8217"과 같은 문자열을 자동으로 변환하므로 "그렇게 할 여지가 없을 것"입니다.
  3. 내가 테이블에이 문자열을 저장

MySQL의 방식은

CREATE TABLE IF NOT EXISTS `rss_item_safe_texts` (
    `id` int(10) unsigned NOT NULL, 
    `title` varchar(1000) NOT NULL, 
    `link` varchar(255) NOT NULL, 
    `description` mediumtext NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

JDBC 연결 URL이

connUrl = "jdbc:mysql://" + host + "/" + database + "?user=" + username + "&password=" + password + "&useUnicode=true&characterEncoding=UTF-8"; 

자바 코드는 resu로

PreparedStatement updateSafeTextSt = conn.prepareStatement("UPDATE `rss_item_safe_texts` SET `title` = ?, `link` = ?, `description` = ? WHERE `id` = ?"); 
updateSafeTextSt.setString(1, EscapingUtils.escapeXssInjection(title)); 
updateSafeTextSt.setString(2, link); 
updateSafeTextSt.setString(3, EscapingUtils.escapeXssInjection(description)); 
updateSafeTextSt.setInt(4, itemId); 
updateSafeTextSt.execute(); 
updateSafeTextSt.close(); 

입니다 내가 데이터베이스에서 깨진 문자를 보았습니다 "그래서 그것 '? 가능성이 낮음 "웹 페이지 (utf-8 페이지)에 텍스트가 출력되는 것을 볼 수 있습니다.

답변

5

인코딩을 다르게 설정할 수있는 장소가 많이 있습니다. 귀하의 데이터베이스/테이블/열 시작하는 올바른 인코딩을 있습니다. 또한 일반적으로 MySQL에서 utf8 할 수있는 모든 설정 :

mysql> show variables like '%char%'; 
+--------------------------+----------------------------+ 
| Variable_name   | Value      | 
+--------------------------+----------------------------+ 
| character_set_client  | utf8      | 
| character_set_connection | utf8      | 
| character_set_database | utf8      | 
| character_set_filesystem | binary      | 
| character_set_results | utf8      | 
| character_set_server  | utf8      | 
| character_set_system  | utf8      | 
| character_sets_dir  | /usr/share/mysql/charsets/ | 
+--------------------------+----------------------------+