Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP和JavaScript中的德语字符计数错误_Javascript_Php_Character_Utf - Fatal编程技术网

PHP和JavaScript中的德语字符计数错误

PHP和JavaScript中的德语字符计数错误,javascript,php,character,utf,Javascript,Php,Character,Utf,我正在制作一个以德语为主要语言的测验网站。 在PHP中,当我计算这个文本=>“(ä,ö,ü和ß)”时,它总共返回19个字符,但在Javascript(在浏览器中)中它计为15个字符 //- PHP strlen("(ä, ö, ü and ß)"); // - returns 19 //- JS "(ä, ö, ü and ß)".length; //- return 15 我需要让他们平等。可能吗?我如何在注释中写入strlen将返回字节数,您可以使用

我正在制作一个以德语为主要语言的测验网站。 在PHP中,当我计算这个文本=>“(ä,ö,ü和ß)”时,它总共返回19个字符,但在Javascript(在浏览器中)中它计为15个字符

//- PHP
strlen("(ä, ö, ü and ß)"); // - returns 19
//- JS
"(ä, ö, ü and ß)".length; //- return 15

我需要让他们平等。可能吗?

我如何在注释中写入strlen将返回字节数,您可以使用
mb\u strlen
如:

echo mb_strlen("(ä, ö, ü and ß)", 'utf8'); // output 15
链接:


使用TextEncoder Javascript本机API将字符串从UTF-16格式转换为UTF-8格式,然后获取字节长度

var encodedText = new TextEncoder().encode("(ä, ö, ü and ß)");
console.log(encodedText.length);

请注意,它在IE中不起作用。请参阅

strlen()
返回字节数,而不是字符串中的字符数。请阅读官方指南“注意:
strlen()
返回字节数而不是字符串中的字符数。”中的。那么,您想做什么?在JS中计算字节数还是在PHP中计算字符数?提示:Javascript中String对象的length属性包含字符串的长度,以UTF-16代码单位表示,
strlrn
函数在PHP中返回字节数,而不是字符串中的字符数。