Php文本编码

时间:2015-01-25 18:08:12

标签: php

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

代码:

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;
}

1 个答案:

答案 0 :(得分:3)

您的$chars数组中有一些字符是多字节字符(准确地说是UTF-8)。不幸的是,PHP本身并不能处理多字节字符。

此处的解决方案是使用支持多字节字符的变体替换所有调用。 mbstring扩展程序提供了此类支持。

您可以通过调用mb_substr功能将呼叫替换为$chars[rand(0,88)]。所以你会得到类似mb_substr($chars, rand(0, 88), 1)的东西。