代码之家  ›  专栏  ›  技术社区  ›  donefun

在PHP中将波兰语字符存储为变量

  •  0
  • donefun  · 技术社区  · 4 年前

    我正在创建一个简单的注册表,您必须在其中的textarea中键入您的昵称。当用户使用波兰语字符(、等)时会出现问题。当我尝试通过echo显示整个字符串时,它看起来就像它应该显示的那样,但是当我尝试只显示一个字符时,它会显示这个奇怪的符号。

    function ech($nam)
    {
        echo $nam;
        echo "</br>";
        echo $nam[1];
    }
    
    $te = $_POST['sth']; //$te equals "śżć" now
    ech($te);
    

    输出:

    śżć

    �

    1 回复  |  直到 4 年前
        1
  •  1
  •   hanshenrik    4 年前

    对字符串的字符使用偏移量,如 $nam[1] 实际上只返回一个字节,但字符是多个字节。使用多字节安全字符串函数,如 mb_substr($nam, 0, 1)

    • php字符串是字节数组(例如,与JavaScript不同,JavaScript中的字符串是utf16字符数组),在UTF-8中,字符串“”包含2个字节,执行strlen(“”)会得到2个字节,执行bin2hex(“”)会得到“c59b”,而当执行$str[0]时,只会获取组成的2个字节中的第一个字节,这本身就没有任何意义,因此,在执行$str[0]时,您会得到(fwiw DONG echo$str[0])。$str[1]也可以工作,因为碰巧有2个字节,您需要手动获取前2个字节)
    推荐文章