Php文本编码

Php文本编码,php,Php,我有一些自动生成字符串的代码,但一些特殊字符如下所示:� 代码: 标题(“内容类型:text/html;字符集=utf-8”); 函数随机字符串($length=10){ $chars='0123456789abcdefghijklmnopqrstuvxyzåääabcdefghijklmnopqrstuvxyzÄÖ!%和()=?$${}[]+; $randString=''; 对于($i=0;$i

我有一些自动生成字符串的代码,但一些特殊字符如下所示:�

代码:

标题(“内容类型:text/html;字符集=utf-8”);
函数随机字符串($length=10){
$chars='0123456789abcdefghijklmnopqrstuvxyzåääabcdefghijklmnopqrstuvxyzÄÖ!%和()=?$${}[]+;
$randString='';
对于($i=0;$i<$length;$i++){
$randString.=$chars[rand(0,88)];
}
echo$randString;
返回$randString;
}

$chars
数组中有几个多字节字符(精确地说是UTF-8)。不幸的是,PHP本身不能很好地处理多字节字符

这里的解决方案是用支持多字节字符的变量替换所有调用。扩展提供了这种支持


您可以将调用替换为
$chars[rand(0,88)]
,方法是调用函数。因此,您会得到类似于
mb_substr($chars,rand(0,88),1)

您是否试图对字符串进行“编码”、“加密”或“散列”。。这三个函数之间有很大的区别。@OrelEraki您认为该函数是如何用来加密或散列某些内容的?显然,这是一个关于字符编码的问题。php不认为字符串是包含utf8字符的字符串-
字符串是一系列字符,其中字符与字节相同。这意味着PHP只支持256个字符集,因此不提供本机Unicode支持。
-请参阅,尤其是字符串类型的详细信息。源文件的编码也必须是UTF-8才能使用此代码。您应该使用特殊的“Unicode”函数从字符串中提取第i个字符(因为某些字符需要两个或更多字节)。@OrelEraki该函数称为RandomString。猜猜它是做什么的。mb_substr($chars,rand(0,88),1,'utf8');成功了。
header("Content-type: text/html; charset=utf-8");
function RandomString($length = 10){
    $chars ='0123456789abcdefghijklmnopqrstuvwxyzåäöABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ!#¤%&()=?@£$€{}[]+';
    $randString = '';
    for($i = 0; $i < $length; $i++){
        $randString .= $chars[rand(0, 88)];
    }
    echo $randString;
    return $randString;
}