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

时间:2015-04-02 13:08:57

标签: php

为什么,当我缩短字符串时。字母“å,ä,ö”变成“?”?
如果我使用名称“Ö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



2 个答案:

答案 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_ *函数是多字节字符集识别的;并以字符工作,而不是以字节为单位