在PHP子串中返回 这些类型的字符?

Gun*_*tel 4 javascript php substr charat

我想在PHP中获取字符串的第一个字符.但它会返回一些未知的角色?.为什么会这样?

$text = "????? ?q????? ???"; // Hindi String 
$char = $text[0];   // $text{0}; also try here .
echo $char;   // output like ?

//expected Output ?

//Below code also used
$char = substr($text , 0 , 1);  // Getting same output
Run Code Online (Sandbox Code Playgroud)

如果我使用javascript,我发现我得到了完美的输出:

var text = "????? ?q????? ???"; // Hindi String 
var char = text.charAt(0);
console.log(char)   // output like ?
Run Code Online (Sandbox Code Playgroud)

请有人告诉我这个问题并解决这个问题吗?为什么这些错误如果charAt&substr以相同的方式工作?

smo*_*ttt 13

你应该使用mbstring作为unicode字符串.

$char = mb_substr($text, 0, 1, 'UTF-8'); // output ?
Run Code Online (Sandbox Code Playgroud)

如果需要,您可以将'UTF-8'替换为任何其他编码.

PHP默认情况下不支持unicode.请注意,如果要使用此选项,则需要启用mbstring.您可以通过检查是否加载了扩展程序来检查:

if (extension_loaded('mbstring')) {
    // mbstring loaded
}
Run Code Online (Sandbox Code Playgroud)