2012-01-16 2 views
0

텍스트 형식의 설명 및 latin1_swedish_ci이라는 이름의 필드가 포함 된 MySQL 데이터베이스를 상속 받았습니다.PHP에서 MySQL의 유니 코드 문자 읽기

이 필드의 문제점은 일부 유니 코드 문자가 포함 된 utf-8 데이터가 포함되어 있다는 것입니다. 문자 733 등이 있습니다. 때때로이 문자는 "& # 733"으로 인코딩 된 HTML로 표시된 필드에도 존재합니다.

테이블을 읽고 데이터를 CSV 파일로 내보내려고하는데이 문자를 큰 따옴표로 나타내야합니다.

HTML 인코딩 된 문자 읽기가 쉽습니다. 그러나 실제 유니 코드 문자가 utf-8로 변환 된 후에 "?"가 표시됩니다.

유니 코드 문자 733 (U + 02DD)을 어떻게 읽고 인식하고 변환합니까?

다음은 단순한 (테스트되지 않은) 코드 버전입니다.

<? 
$testconn=odbc_connect ("TESTLIB", "......", "......"); 

$query="SELECT Description FROM TestTable"; 

$rsWeb=mysql_query($query)); 

$WebRow=mysql_fetch_row($rsWeb)); 
$Desc = $WebRow[0]; 
$Desc = str_replace('"','""',$Desc); 

fwrite($output,"\"".$Desc."\",\r\n"); 
%> 
+0

http://www.php.net/manual/en/function.html-entity-decode : SQL 서버 접속 – Evert

+0

html_entity_decode()를 시도했습니다. 그러나 캐릭터는 이미 "?"로 변환되었습니다. 전에 html_entity_decode를 쓸모 없게 만드는 기회를 얻습니다. "?"로 변환 된 것 같습니다. mysql_fetch_row 또는 mysql_query 중에. – user1152124

답변

0

데이터베이스에 비 엔터티 (유니 코드) 버전 만 넣고 나머지는 엔터티 디코딩해야합니다. 그러나 MySQL에서 UTF-8을 사용하려면 다음과 같이 기억해야 할 몇 가지 사항이 있습니다.

  • 테이블 열의 데이터 정렬은 utf8_bin 또는 유사해야합니다.
  • 테이블의 데이터 정렬 및 데이터베이스 정렬은 경우에 따라 utf8_bin이어야합니다.
  • 연결 문자셋은 UTF8이어야합니다. "SET NAMES utf8"쿼리를 실행하여이 작업을 수행하십시오.

또한 HTML 페이지를 출력하는 경우 UTF8 문자 세트도 있어야합니다. 모든 것이 올 바르면 UTF8 문자가 제대로 나옵니다.

행운을 빈다.

http://php.net/manual/en/mysqli.set-charset.php

$mysqli->set_charset("utf8"); 
0

또한 UTF-8 캐릭터 세트. ph