为什么,当我缩短字符串时。字母“å,ä,ö”变成“?”?
如果我使用名称“Örjan”它变成“Orjan”
但是当我使用“Björn”时,一切正常吗?
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
与Orjan
BJÖRNSSON
乙
乙
乙
答案 0 :(得分:0)
我假设您的编码是utf-8,并且您可能只打印多字节字符的一部分。 尝试使用多字节安全功能,例如mb_substr:
mb_substr($str, 0, 1, "UTF-8");
答案 1 :(得分:0)
$usr_fname_f_letter = $usr_fname_f_letter[0];
只需从$usr_fname_f_letter
获取第一个(零偏移)字节;但是你使用的是多字节字符集,就像把一部分字符砍成两半一样。
使用
mb_substr($usr_fname_f_letter, 0, 1, 'UTF-8')
因为mb_ *函数是多字节字符集识别的;并以字符工作,而不是以字节为单位