2014-05-05 177 views
0

这个问题是我见过一段时间以来最奇怪的事情。PhP获得第一个字母作为符号

我得到了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”。

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

回答

1

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

+0

我使用的是科莫多,只显示“UTF-8”(至极我使用),这也可能发生,这不显示“Whitout BOM”,因为它显示Notepad ++。当然可以,但是奇怪的是它只发生在子菜单的第一个子菜单上,而其他所有子菜单都正确显示。我会尽快尝试! – Cheshire

0

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

如果存在一种或多种编码类型都在页面中声明

+0

数据不是从DB获取的,谢谢。也尝试了从utf8_encode,并认为iconv也要尝试它,以防万一,当我可以尝试从UFT-8没有BOM“他们推荐。但我只是看到它奇怪,即使有一个consontant(S, C ...)它也使怪异的字符/符号... – Cheshire

相关问题