2011-12-08 1 views
0

나는 아래의 코드,PHP SimpleXML을 몇 가지 알 수없는 인코딩을 생산

mysql_connect("localhost", "user", "pass") or die("Could not connect: " . mysql_error()); 
mysql_select_db("database"); 
mysql_query ("set character_set_results='utf8'"); 
$result = mysql_query("SELECT xxx"); 

while ($row = mysql_fetch_array($result, MYSQL_NUM)) { 
    $str = $row[0]; 
    echo $str; 
} 

를 실행하면 내가 가지고 내가 (아래, UTF-8 인코딩 중국어 단어) 소스를 선택하면 아래의 메시지

LS23A300BS(23”LED顯示器)/ LS22A300BS(21.5”LED顯示器) 
나는 다음과 같이 XML 파일에 SQL 결과를 변환하는 코드를 추가

그러나,

$dom = new domDocument; 
$dom->formatOutput = true; 

$root = $dom->appendChild($dom->createElement("items")); 
$sxe = simplexml_import_dom($dom); 

mysql_connect("localhost", "user", "pass") or die("Could not connect: " . mysql_error()); 
mysql_select_db("database"); 
mysql_query ("set character_set_results='utf8'"); 
$result = mysql_query("SELECT xxx"); 

while ($row = mysql_fetch_array($result, MYSQL_NUM)) { 
    $item = $sxe->addChild("item"); 
    $str = $row[0]; 
    $item->addChild("desc", $str); 
} 

echo $sxe->asXML(); 

mysql_free_result($result); 

나는 아래의 메시지를 확인있어 경우 소스 (아래를 알 수없는 인코딩),

내가 물어보고 싶은
LS23A300BS(23”LED顯示器)/ LS22A300BS(21.5”LED顯示器) 

,
알 수없는 인코딩의 유형은 무엇입니까?
어떻게 알 수없는 인코딩을 UTF-8로 다시 바꿀 수 있습니까?

답변

1

두 가지

덕분에 시도 :

  1. 사용 mysql_query('SET NAMES utf8'); 대신 character_set_results을. 이것은 몇 가지 주요 MySQL 설정을 utf8로 설정합니다.
  2. DOMDocument의 인코딩을 선언하지 않았습니다. 생성자으로 이것을 사용해보십시오 : new DOMDocument('1.0', 'UTF-8')

이것은 여담입니다 : 당신은 모든 여기 DOMDocument 필요하지 않습니다. Try $sxe = simplexml_load_string('<?xml version="1.0" encoding="utf-8"?><items/>');

+0

+1 새 DOMDocument ('1.0', 'UTF-8')'로 변경하여 문제를 해결했습니다. –