기록을 위해 - 여기 저의 첫 번째 질문이지만 커뮤니티에서 마지막으로 입력 한 내용은 아닙니다. 하지만 그게 내가 여기있는 이유가 아니야.GD (imagettftext()) 및 UTF-8 문자로 작업하기
현재 텍스트가있는 이미지를 생성해야하는 간단한 시스템을 개발 중입니다. 내가 GD 등등
전자,
A, C, Z, ä, ø 같은 UTF-8 문자를 처리 할 수없는 것을 깨달았 때까지 모든게 잘 갔다.
이 일을 지우려면 - 나는 구글의 깊이로 파고 내 문제를 해결하기 위해 노력 imagettftext()
사용하고 일부 솔루션은 반환 된, 그들 중 누구도, 슬프게도, 완전히 내 문제를 해결하지 않습니다. 현재 내가이 스레드에있는이 스크립트를 사용하고 있습니다 - PHP function imagettftext() and unicode
private function properText($text){ // Convert UTF-8 string to HTML entities $text = mb_convert_encoding($text, 'HTML-ENTITIES',"UTF-8"); // Convert HTML entities into ISO-8859-1 $text = html_entity_decode($text,ENT_NOQUOTES, "ISO-8859-1"); // Convert characters > 127 into their hexidecimal equivalents $out = ""; for($i = 0; $i < strlen($text); $i++) { $letter = $text[$i]; $num = ord($letter); if($num>127) { $out .= "&#$num;"; } else { $out .= $letter; } } return $out; }
을하고 일부 문자는 아니지만 그들 모두 잘 동작, 예를 들어, 움라우트와 올바르게 변환되지 않습니다.
그래서 사용자 입력을 예측할 수 없으므로 어디서 무엇을 더 볼지 모릅니다. 더 정확하게 말하면, 시스템은 XML 피드에서 아티스트 이름을 가져오고 이미지 생성을 위해 데이터를 사용합니다 (저는 상형 문자를 지원할 계획이 아닙니다).
PHP의 mb_detect_encoding()을 사용하여 피드에서 수집 한 데이터가 실제로 UTF-8인지 확인했으며, 현재 올바르게 표시되지 않은 모든 문자가 글꼴 파일에 삽입되어 있는지 확인했습니다. 0 imagettftext() 기능을 Windows charmap 도구로 확인하여 기능에 공급합니다.
잘하면 내 대답을 찾을 수 있으며 미리 도움을 주셔서 감사합니다!
명확히하려면 편집 - 문자가 더 정확히 말하면, 제대로 표시되지 않았거나이 잘못된 문자로 대체됩니다. 이 BIN2HEX 사용 "호세 곤잘레스"
편집 아니오 2
() XML 피드 반환이에서 검색된 데이터에 기능을 읽어야
- 여기 스크린 샷입니다.
José González -> 4a6f73c3a920476f6e7ac3a16c657a // input -> bin2hex(input)
편집 - 나는 내 문제에 대한 답변을 내놓았다 내 연구를 계속 따라
고정은,이 코드 조각은 그것을했다!
$text = mb_convert_encoding($text, "HTML-ENTITIES", "UTF-8"); $text = preg_replace('~^(&([a-zA-Z0-9]);)~',htmlentities('${1}'),$text); return($text);
이제 모든 문제가있는 문자가 올바르게 표시됩니다.
정확히 작동하지 않는 것은 무엇입니까? 출력이 예상 한 것과 어떻게 다른가요? 원하는 문자가 실제로 들어있는 글꼴을 사용하고 있습니까? 일본어로'imagegettftext'를 사용하기 때문에 유니 코드 문자는 일반적으로 문제가되지 않습니다. – deceze
예, 원래 게시물에서 말했듯이 _ 저는 현재 올바르게 표시되지 않은 모든 문자가 글꼴 _ 파일에 삽입되어 있는지 확인했습니다. 출력이 작동한다는 것 - 문자가 올바르게 표시되지 않거나, 더 정확하게 말하면 잘못된 문자로 바뀝니다. 다음은 스크린 샷입니다 - http://imgur.com/B8RHa - "José González"를 읽어야합니다 – Pankucins
오류 : http://i.imgur.com/B8RHa.jpg는 인쇄와 같이 인코딩 문제입니다. ANSI의 일부 UTF-8 캐릭터. – darma