MySQL 데이터베이스와 Perl 스크립트를 UTF-8로 변환했습니다. 그리고 마침내 그것이 효과가 있었지만, 그것은 어떻게 든 미친 해결책입니다. 그게 내가 무슨 짓을했는지 :Perl-Scripts 및 MySql Database를 UTF8로 설정 : 독일어 Umlaute는 키릴 문자로만 작동합니다.
MySQL 데이터베이스가 : 완전히 UTF8
펄 스크립트 설정 : 소스 코드가 UTF8 인코딩으로 변환됩니다. "utf8 사용;" 상단에.
HTML 헤더 :
print "Content-type: text/html\n\n";
및
<META CHARSET='UTF-8'>
가 데이터베이스에 연결 :
$dbh->{'mysql_enable_utf8'} = 1;
및
"set names 'utf8';"
자, 모든 것은 키릴 문자 (러시아어) 문자와 함께 작동합니다. 입력, 출력 및 데이터베이스에서의 처리입니다. 하지만 내가 가진 문제는 독일어 "Umlaute"입니다 : äöü. 브라우저에서 올바르게 표시되지 않습니다. 문자를 표시하지 않는 HTML 요소 옆에있는 문자에 키릴 문자를 넣은 경우에만 작동합니다 (예 : 이런 식으로 :
<!-- Э -->
이것은 어색한 해결책이며, 나는 해결책이 있어야한다는 것을 알고 있습니다. 아무도 무엇이 빠져 있는지 알 수 없습니다. 모든 답변에 미리 감사드립니다.
업데이트 :
응답 해 주셔서 감사합니다. 가장 간단한 HTML 파일로도 문제가 있다는 것을 알아 냈습니다.
#!/usr/bin/perl
use utf8;
print "Content-Type: text/html; charset=utf-8\n\n";
print <<END;
<HTML>
<HEAD>
<META CHARSET='UTF-8'>
</HEAD>
<BODY>
<H1>The Country Österreich</H1>
</BODY>
</HTML>
END
결과는에서 볼 수있다 : 당신이 볼 수 있듯이 http://5mls.com/test_bad.cgi
은 "Ö"가 표시되지 않습니다 나는이 소스 코드를 사용합니다.
이제 작동 코드 :
#!/usr/bin/perl
use utf8;
print "Content-Type: text/html; charset=utf-8\n\n";
print <<END;
<HTML>
<HEAD>
<META CHARSET='UTF-8'>
</HEAD>
<BODY>
<H1>The Country Österreich<!-- Э --></H1>
</BODY>
</HTML>
END
결과는에서 볼 수있다 :은 "O" http://5mls.com/test_good.cgi
이 시간 때문에 주석의 러시아 문자 "Э"의 제대로 표시됩니다. "Ö"가 러시아 문자없이 어떻게 표시 될 수 있는지, 아무도 모르는가?
헤더에 utf-8도 보내십시오 :'print "Content-type : text/html charset = utf-8 \ n \ n"; "http 헤더가 먼저 고려됩니다. – VMai
문제가있는 곳을 찾아야합니다. 1) phpMyAdmin을 가지고 있습니까? 그렇다면 phpMyAdmin을 사용할 때 데이터베이스에 올바른 문자열이 표시됩니까? 그 프로그램이 실제로 데이터베이스에있는 것을 안정적으로 표시한다는 것을 알고 있습니다. – ikegami
2) 데이터베이스의 데이터를 올바르게 처리합니까? 'sprintf ("U + % v04X", $ str)'의 출력과 그 문자열이 무엇을 기대 하는지를 제공하십시오. – ikegami