Javascript和PHP中的字符编码不同吗?
我需要生成一个“随机”128字节的密钥(随机性的强度目前并不重要)。我使用以下代码在Javascript中执行此操作: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
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将字符定义为字节。