mysql과 php를 사용하고 있습니다.mysql 테이블에서 데이터를 읽을 때 이상한 문자
내 데이터베이스에는 다음과 같은 열 값이 있습니다.
Preaqueça o forno médio (180ºC).
그러나 PHP를 사용하여 검색하면 아래 문자열이 표시됩니다.
Preaqueu00e7a o forno mu00e9dio (180u00baC).
문자 인코딩에 문제가 있습니다. 그것을 고칠 어떤 아이디어?
mysql과 php를 사용하고 있습니다.mysql 테이블에서 데이터를 읽을 때 이상한 문자
내 데이터베이스에는 다음과 같은 열 값이 있습니다.
Preaqueça o forno médio (180ºC).
그러나 PHP를 사용하여 검색하면 아래 문자열이 표시됩니다.
Preaqueu00e7a o forno mu00e9dio (180u00baC).
문자 인코딩에 문제가 있습니다. 그것을 고칠 어떤 아이디어?
select 쿼리의 결과를 표시하기 위해 json_encode를 사용하고 있었다. 그것이 문제의 원인이었습니다.
function my_json_encode($arr)
{
//convmap since 0x80 char codes so it takes all multibyte codes (above ASCII 127). So such characters are being "hidden" from normal json_encoding
array_walk_recursive($arr, function (&$item, $key) { if (is_string($item)) $item = mb_encode_numericentity($item, array (0x80, 0xffff, 0, 0xffff), 'UTF-8'); });
return mb_decode_numericentity(json_encode($arr), array (0x80, 0xffff, 0, 0xffff), 'UTF-8');
}
이 기능은 기본 json_encode 대신 사용됩니다. 완벽하게 작동합니다.
두 가지 문제가있는 것 같습니다.
ç
는 ç
위해 글자 깨짐과 º
는 º
위해 글자 깨짐입니다. 이를 위해, 당신은 확인해야합니다.
표시)
진수 00e7
는 ç
의 "유니 코드 코드 포인트"처럼 보인다, 그러나 당신이 그것을 만들 수 있었는지 불분명하다.
무엇을 저장했는지 보려면 SELECT col, HEX(col) FROM ...
부터 시작하겠습니다. SHOW CREATE TABLE
도 제공하십시오. (Test the data의 세부 정보)
모지 베크 문제를 수정하고 16 진수를 수행 한 후 새로운 질문을 시작하십시오. (나는이 스레드가 지키기에 너무 지저분해질 것을 두려워한다.)
모든 시스템이 올바른 인코딩 (아마 UTF)을 사용하는지 확인하십시오. –
검색 및 표시 위치의 코드를 공유 하시겠습니까? – C2486
테이블 구성이 다음과 같이 속합니다. DEFAULT CHARSET = utf8 – Karthi