2012-04-19 6 views
2

안녕하세요, 그리스어로 작성된 문자열을 "ISO-8859-7"로 인코딩 된 사이트에서 읽는 중입니다.이 스크립트는 mysql 데이터베이스에 일부를 추가하려는 의도로 cmd로 실행됩니다. 문제는 내가 데이터베이스에 아무 것도 추가하기 전에 에코와 인코딩 문제가있는 것 같습니다. 나는 관련 코드 부분을 첨부하고있다.그리스어로 인코딩 된 PHP

$fil1=hitFormGet("http://www.topsites.gr/gr_domain_list/".$site->href); 
$fil1=iconv("ISO-8859-7","UTF-8",$fil1); 
$html1=str_get_html($fil1); 
$data=$html1->find('td class="res3" table tbody table tbody tr'); 
echo "ttl".$data[4]->plaintext."\n"; 

및 출력은 TTL Î|ιλοξÎμνÎμί 사이트입니다 : 내가 ± II는

은 (그것은 너무 여기 다르게 나타납니다 ...)

+1

이 당신이 잘 살고 올바른 문자 인코딩 (utf-8)? – F21

+0

Nop 잘 모릅니다 ... – Evan

+1

실제로 페이지의 문자 인코딩에 문제가 있는지 확인하려면 페이지를 마우스 오른쪽 단추로 클릭하고 문자 인코딩을 utf-8로 변경하십시오. 괜찮아 보인다면 php가 utf-8로 charset 헤더를 보냅니다 :'ini_set ('default_charset', 'UTF-8');' – F21

답변

3

를 사용하여 UTF-8 때마다 PHP와 MySQL을 다루고 있습니다. 5.3.6 세트

$DB_USERNAME = ''; 
$DB_PASSWORD = ''; 
$DB_HOST = ''; 
$DB_NAME = ''; 

$pdo_attributes = array(); 
$pdo_attributes[PDO::ATTR_EMULATE_PREPARES] = FALSE; 

$dsn = sprintf('mysql:dbname=%s;host=%s;charset=utf8', $DB_NAME, $DB_HOST); 
$pdo = new PDO($dsn, $DB_USERNAME, $DB_PASSWORD, $pdo_attributes); 

또한, PHP <이 추가 속성 : 저는 여기에 연결하는 방법입니다

$pdo_attributes[1002] = 'SET NAMES utf8'; 

정수 1002은 PDO :: MYSQL_ATTR_INIT_COMMAND을 대표하는, 그러나 그 명령은 PHP <에 고장 5.3.1.

이 답변의 원래 내용을 아래에서 찾으십시오.이 내용은 구형입니다. 이 시 필요했다 다른 횡설수설 방지 팁, 더 이상을하지 않는 것이 좋습니다 이전 mysql_* 기능을 사용하여 연결하는 방법이다 :, 렌더링 된 페이지에서

mysql_connect ("localhost", "DB_USER", "DB_PASSWORD") or die (mysql_error()); 
mysql_select_db ("DATABASE_NAME") or die (mysql_error()); 

mysql_query("SET character_set_client=utf8"); 
mysql_query("SET character_set_connection=utf8"); 
mysql_query("SET character_set_database=utf8"); 
mysql_query("SET character_set_results=utf8"); 
mysql_query("SET character_set_server=utf8"); 
mysql_query("SET NAMES 'utf8'"); 
+0

Thnx 매우 도움이되었습니다. – Evan

+0

방금 ​​제 하루를 만들어 줘서 고마워요! –

+0

@MurtazaAshraf : 도움이 되었기 때문에 기쁩니다. 그러나 더 이상 mysql_ * 함수를 사용해서는 안됩니다. 방금 PDO에 대한 답변을 업데이트했습니다. 대신 사용하십시오! – dotancohen