С помощью этого кода, когда я заполняю 漢字
во входной элемент с типом text
и имя text
и нажмите кнопку отправки, его шоу mb_strlen : 16
и strlen : 16
Почему mb_strlen и strlen из значения post неверны? PHP?
<?php
include("connect.php");
if(isset($_POST["submit"]))
{
$string = mysqli_real_escape_string($db_mysqli,$_POST['text']);
//$string = "漢字";
echo $string."<BR>";
echo "mb_strlen : ".mb_strlen($string, 'utf-8')."<BR>";
echo "strlen : ".strlen($string)."<BR>";
if(strlen($string) != mb_strlen($string, 'utf-8'))
{
echo "Please enter English words only:(";
}
else
{
echo "OK, English Detected!";
}
}
?>
<form method="post" ENCTYPE = "multipart/form-data">
<input type="text" name="text">
<input type="submit" name="submit" value="OK" id="button-blue" style=" float: none; ">
</form>
Но при использовании этого кода, это покажет mb_strlen : 2
и strlen : 6
Я хочу знать, почему значение из приведенного выше кода неверно и как подать заявку?
<?php
$string = "漢字";
echo $string."<BR>";
echo "mb_strlen : ".mb_strlen($string, 'utf-8')."<BR>";
echo "strlen : ".strlen($string)."<BR>";
if(strlen($string) != mb_strlen($string, 'utf-8'))
{
echo "Please enter English words only:(";
}
else
{
echo "OK, English Detected!";
}
?>
Только совет у меня есть: во втором примере роль PHP-File Encoding играет роль, потому что вы пишете '' 漢字 "' непосредственно в файл. – JustOnUnderMillions
И прочитайте здесь отмеченный ответ http://stackoverflow.com/questions/8250709/mb-strlen-strlen-dont-return-correct-values-from-an-ajax-call-to-php – JustOnUnderMillions
Похоже, что данные отправлены вашим клиентом не обрабатывается должным образом как unicode на сервере. – arkascha