2010-04-23 5 views
2

mysql 쿼리 내부에서 charset을 변환하는 것에 대한 질문이 있습니다.mysql 쿼리에서 변환 문자 집합

나는 2 개의 데이터베이스를 가지고 있습니다. 하나는 웹 사이트 (joomla)이고 다른 하나는 포럼 (IPB)입니다. 기본적으로 "SET NAMES UTF8"이있는 joomla 내부에서 쿼리를 수행하고 있습니다. 포럼 데이터베이스에서 테이블을 쿼리하려고합니다. "ibf_topics"라는 테이블. 이 테이블에는 latin1 인코딩이 있습니다.

not-utf8 테이블에서 아무것도 선택하려면 다음을 수행하십시오. 그 후

//convert connection to handle latin1. 
$query = "SET NAMES latin1"; 
$db->setQuery($query); 
$db->query(); 

$query = "select id, title from other_database.ibf_topics"; 
$db->setQuery($query); 
$db->query(); 
//read result into an array. 

//return connection to handle UTF8. 
$query = "SET NAMES UTF8"; 
$db->setQuery($query); 
$db->query(); 

, 내가 선택한 타일을 사용하고자 할 때, 나는 다음과 같은 사용

echo iconv("CP1256", "UTF-8", $topic['title']) 

질문은,이 모든 번거 로움을 피하기 위해 어쨌든 무엇입니까? 지금, 나는 UTF8로 포럼 데이터베이스를 변경할 수 없습니다 나는 라틴어로 줌라 데이터베이스를 변경할 수 없습니다 : S

답변

2

당신은이 개 데이터베이스 연결, 줌라에 1 IPB 하나를 열 수 있습니다. 더 많은 리소스를 사용하게 될 것이지만, 코드를 읽기 쉽게 만들 것이고, db 설정에서 모든 구성 (charset 등)을 수행 할 수 있습니다. 상황이 바뀌면 나중에 마이그레이션하는 것이 더 쉬울 것입니다. SET NAMES 코드를 모두 제거하지 않아도됩니다.

0
$query = "SET NAMES UTF8"; 
$db->setQuery($query); 
$db->query(); 

$query = "select id, title from other_database.ibf_topics"; 
$db->setQuery($query); 
$db->query(); 
+0

죄송합니다. 나는 그것을 얻지 않았다. 더 설명해 주시겠습니까? 이 코드와 내 코드의 차이점은 무엇입니까? – Yousf

+0

@Yosif 2 배 짧습니다. –

+0

답변을 얻었지만 작동하지 않습니다. "other_database.ibf_topics"에서 선택하기 전에 이름을 latin1로 변경해야합니다. 이 테이블에는 연결이 UTF8 인 경우 손상된 영어 이외의 문자가 들어 있습니다. – Yousf

0

/* 당신이 데이터베이스 연결 후 */

헤더를 문자 집합을 설정할 수 있습니다 ('콘텐츠 형식 : text/html; 문자셋 = UTF-8'); 연결 후

/* */

는 mysql_query ("이름 UTF8 설정");

/* 또는 */

는 mysql_query ("문자 세트 UTF8 설정");

/* 또는 */

는 mysql_query ("이 collation_connection = 'utf8_general_ci를"SET ");