doulun1915 2015-04-02 13:08
浏览 47
已采纳

字符串不能以Å,Ä,Ö开头

Why is it, when i shorten a string. Letter "å, ä, ö" becomes "?"?
If i use the Name "Örjan" it becomes "Orjan".
But when i use "Björn", it works all fine?

PHP

//Create initials
$usr_fname_f_letter = $_POST['usr_fname'];
$usr_fname_f_letter = $usr_fname_f_letter[0];
$usr_lname_f_letter = $_POST['usr_lname'];
$usr_lname_f_letter = $usr_lname_f_letter[0];
$usr_inits = $usr_fname_f_letter .= $usr_lname_f_letter;

echo $_POST['usr_fname'];
echo '<br>';
echo $_POST['usr_lname'];
echo '<br>';
echo $usr_fname_f_letter;
echo '<br>';
echo $usr_lname_f_letter;
echo '<br>';
echo $usr_inits;
echo '<br>';

RESULT

Örjan
Björnsson
�B
B
�B

  • 写回答

2条回答 默认 最新

  • dongmou2389 2015-04-02 13:25
    关注
    $usr_fname_f_letter = $usr_fname_f_letter[0];
    

    simply takes the first (zero offset) byte from $usr_fname_f_letter; but you're using a multibyte character set and that's like chopping part of a character in half.

    Use

    mb_substr($usr_fname_f_letter, 0, 1, 'UTF-8')
    

    because the mb_* functions are multi-byte character set aware; and work in characters, not in bytes

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?