2013-07-25 2 views
2

PHP를 처음 사용했습니다. ENT_HTML5 플래그로 htmlspecialchars()를 실행하면 작동하지만 영어 이외의 단어는 모두 제거됩니다. 나는 시도했다 :PHP : htmlspecialchars() 및 영어 이외의 언어

<?php 

$sometext = $_GET['query']; 
$sometext = htmlspecialchars($sometext, ENT_HTML5, 'UTF-8'); 
echo $sometext; 

?> 

예를 들어, "Hello world, Привет мир!" (영어, 러시아어). 그러나 그것은 나에게 "Hello world,!"를 돌려 줬다. 나는 php.ini에 접근 할 수 없다. 어쩌면 문제가있을 수 있습니까? 이 문제를 어떻게 해결할 수 있습니까?

는 @deceze, 나는 해결책을 발견, 감사 :

<?php 

$sometext = $_GET['query']; 
$sometext = htmlspecialchars($sometext, ENT_HTML5, 'Windows-1251'); 
echo $sometext; 

?> 
+0

[UTF-8까지 가능] 중복 가능 (http://stackoverflow.com/questions/279170/utf-8-all-the-way-through) – deceze

답변

4

문제는 당신이 그것은 분명하지 않을 때 당신의 문자열, UTF-8 인코딩 된 PHP를 말하는 것이다. 따라서 PHP는이를 올바르게 해석 할 수 없으며 UTF-8로 인코딩되지 않은 모든 문자를 삭제합니다.

은 실제로 UTF-8로 소스 코드 파일을 저장 및/또는 그 캐릭터가 나오는 곳의 인코딩 선언을 변경하거나 문자열이 실제로 저장되어있는 인코딩으로 3 매개 변수를 변경합니다.

참조 What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With TextHandling Unicode Front To Back In A Web App 더 많은 정보가 필요하면.