【问题标题】:Uppercase special characters not showing properly大写特殊字符未正确显示
【发布时间】:2017-08-10 17:52:32
【问题描述】:

我正在开发一个多语言网站。我使用数据库和表格来获取不同单词和句子的翻译。

例如,在我的菜单中,我有一个名为“翻译”的元素。因此,当以德语访问该网站时......该元素将被称为“Übersetzungen”

现在问题来了。对于其余的特殊字符,这个问题不会发生。它似乎只发生在像“Ü”这样的大写特殊字符。

在数据库表中,值为“Ãbersetzungen”,在 HTML 中打印应为“Übersetzungen”。

在其他情况下,例如“Länder”(德语中的国家/地区),翻译返回“Länder”。 (包含小写特殊字符)。

在表头中设置了 UT8,数据正确插入到表中,并且在所有包含 UT8 特殊字符的情况下都可以正常工作,除了特殊的大写字符。

我正在使用 WAMP 来构建我的网站,并且 php.ini 默认使用 utf8。

可能是什么问题?

【问题讨论】:

  • 有许多元素需要指定到特定的字符集。还有一些特殊的多字节函数,例如strtoupper() 具有用于多字节字符的mb_strtoupper()php.net/manual/en/function.mb-strtoupper.php
  • 我不想将字符串转换为大写。我只是想知道为什么大写字符没有像“Übersetzungen”这个词那样正确显示。在数据库表中,值为“Ãbersetzungen”,在 HTML 中打印应为“Übersetzungen”。对于其余情况,不会发生此问题。
  • 哦,那我看错了问题。好吧,无论如何,它是一个编码问题。我之前写过要检查的内容的answer with a little list,它涵盖了大部分 PHP/MySQL 的关于字符集的检查。

标签: php utf-8 uppercase


【解决方案1】:

试试这个..

https://www.php.net/manual/en/function.mb-strtoupper.php

<?php
$str = "Τάχιστη αλώπηξ βαφής ψημένη γη, δρασκελίζει υπέρ νωθρού κυνός";
$str = mb_strtoupper($str, 'UTF-8');
echo $str; // Prints ΤΆΧΙΣΤΗ ΑΛΏΠΗΞ ΒΑΦΉΣ ΨΗΜΈΝΗ ΓΗ, ΔΡΑΣΚΕΛΊΖΕΙ ΥΠΈΡ ΝΩΘΡΟΎ ΚΥΝΌΣ
?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-24
    • 2015-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多