PHP的mb_strtoupper函数中的土耳其字符错误

时间:2017-08-04 20:49:09

标签: php utf-8 character turkish

我的问题是对那些对我们有趣的角色有麻烦的土耳其大学的解释。

可以肯定PHP 5有一个 bug 大写并因此整理它们。

echo mb_strtoupper('土耳其语首都为ğ,i,ı,ş大写','UTF-8');

给出的结果是:“土耳其人的资本为Ğ,我,我,在大人身上”。

但这是错误的。正确的输出应该是“TURKİSHCAPİTALSforĞ,İ,I,ŞİNPERPERCASE”

在我们的语言中,我们在大写字母“İ”和“ı”的大写字母“I”中有“我”。

我猜你看到了问题。

我们应该在PHP中报告这个错误,有人知道吗?请通知,如果你写一个子程序暂时解决这个问题,将不胜感激。谢谢。

3 个答案:

答案 0 :(得分:3)

你可以试试这个:

function pre_up($str){
    $str = str_replace('i', 'İ', $str);
    $str = str_replace('ı', 'I', $str);
    return $str;
}
echo mb_strtoupper(pre_up('Turkish capitals for ğ, i, ı, ş in uppercase'), 'UTF-8');

我不懂土耳其语,这是对的吗?

<强>输出

  

TURKİSHCAPİTALS为Ğ,İ,I,ŞİNPERPERCASE

答案 1 :(得分:2)

mb_strtoupper不支持区域设置。要处理这些类型的转换,您可以使用Transliterator,例如:

echo Transliterator::create("tr-Upper")
    ->transliterate('Turkish capitals for ğ, i, ı, ş in uppercase');

输出:

TURKİSH CAPİTALS FOR Ğ, İ, I, Ş İN UPPERCASE

答案 2 :(得分:0)

您可以编写自己的函数来执行此操作:

for (Student item : myStudents) {
    System.out.println(item.createProgressReport());

public String createProgressReport() {
    String myString = getName() + " " + getGrade();