Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.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
Javascript和PHP中的字符编码不同吗?_Php_Javascript_Encoding_Character - Fatal编程技术网

Javascript和PHP中的字符编码不同吗?

Javascript和PHP中的字符编码不同吗?,php,javascript,encoding,character,Php,Javascript,Encoding,Character,我需要生成一个“随机”128字节的密钥(随机性的强度目前并不重要)。我使用以下代码在Javascript中执行此操作: var buffer = ""; for(var i=0; i<128; i++) { buffer += String.fromCharCode(Math.round(Math.random()*255)); } var buffer=”“; for(var i=0;iJavascripts.charCodeAt()返回每个字符串的Unicode代码点。Jav

我需要生成一个“随机”128字节的密钥(随机性的强度目前并不重要)。我使用以下代码在Javascript中执行此操作:

var buffer = "";
for(var i=0; i<128; i++)
{
    buffer += String.fromCharCode(Math.round(Math.random()*255));
}
var buffer=”“;

for(var i=0;iJavascripts
.charCodeAt()
返回每个字符串的Unicode代码点。Javascript中的字符串使用UCS-2或UTF-16

另一方面,PHP只将字符串视为字节流。它实际上不知道很多字符集。基本上,它将字符串视为ASCII或拉丁语-1(至少是二进制安全的)

现在,通过URL或表单值传输的参数通常被编码为UTF-8。这将在PHP中起作用,因为UTF-8专门设计用于不知道其存在的系统

的UTF-8编码是
“\xC3\xB2”
。因此,当您使用
$string[0]
访问PHP中的第一个字符时,它只会看到第一个字节,即十六进制
C3
或十进制
195


如果需要,PHP中有一些函数可以处理UTF-8等(这里的解决方法是将字符串从UTF-8转换为UCS-2,然后提取第一个单词以获得Unicode代码点。或者类似的冗长方法)

如果不需要255个不同的字符,
127
应该是最容易使用的,因为PHP将字符定义为字节。