PhP获得第一个字母作为符号

时间:2014-05-05 08:27:44

标签: php encoding utf-8

这个问题是我见过一段时间最奇怪的事情。

我获得了UTF-8中的所有页面,在索引页面中添加了<meta> charset="UTF-8",甚至header()

然后我得到了一个页面,我从一个数组的顶层菜单中添加了所有链接,因此在显示列表时它是可伸缩的。

$menu['services'] = "Services";
    $submenu['services']['sendings'] = "International sendings";
    /* And more like this */

显示链接:

foreach($service as $key => $value) {
    if(isset($submenu[$key])) {
        echo '<li><a href="">'.$value.'</a>
        <ul>';
        foreach($submenu as $keysub => $valuesub) {
            echo '<li><a href="">'.$valuesub.'</a></li>';
        }
        echo '</ul></li>';
    }
    else {
        echo '<li><a href="">'.$value.'</a></li>';
    }
}

这会正确显示所有菜单,除了第一个子菜单(只是第一个)。

<li>
    <a href="">Servicios</a>
        <ul>
            <li>
                <a href="">Anternational sending</a>
            </li>
            <li>
                <a href="">Parking service</a>
            </li>
            <!-- and others -->
        </ul>
    </a>
</li>

如您所见,有一个“A”而不是“I”。我尝试了其他的词,比如“Envíosinternacionales”(西班牙文),并输出“ nvíosinternacionales”。

我真的不知道为什么会这样做。

2 个答案:

答案 0 :(得分:1)

确保使用没有BOM(字节顺序标记)的UTF-8保存所有PHP文件,您可以轻松检查当前设置的编码并使用免费软件notepad ++转换文件。有&#34;格式&#34;在主菜单中,您可以将当前打开的文件设置或转换为所需的编码。您还可以使用一些通用的十六进制编辑器检查字节顺序标记。

答案 1 :(得分:0)

即使您的页面是UTF8,请确保您的数据库表采用UTF8编码(如果提到的数据是从DB填充的)。您也可以尝试使用utf8_encodeiconv

如果在页面中声明了一个或多个编码类型

,也可能发生这种情况