如何用ñ显示数据库值

时间:2015-08-11 01:57:11

标签: php mysql encoding

我尝试了很多类型的解决方案,如:

- htmlentities - >使用此功能时,所有单词都不会显示

- htmlspecialchars - >所有的单词都会有“?”

- utf8_encode - >所有单词都有“?”

- html_entity_decode(htmlentities($test)); - >使用此功能时,所有单词都不会显示

我的代码只是一个简单的选择,这是我的代码:

if (isset($_GET['cityname1'])) 
{

$cityname = strval($_GET['cityname1']);
$cname = mysql_query("SELECT cityname FROM city WHERE provinceid = '$cityname' ORDER BY cityname ASC");

echo "<option value='0'>Select Territory</option>";

  while($provincerow = mysql_fetch_array($cname))
  {
  $pname = htmlentities($provincerow['cityname']);
  echo "<option value='{$pname}'>{pname}</option>";
  }
}
else
{
echo "Please Contact the technical team";
}

1 个答案:

答案 0 :(得分:1)

啊,你在浏览器,PHP和MySQL中偶然发现了奇妙的字符编码世界。

处理这些字符并非易事,因为它取决于许多因素。通常情况下,PHP和MySQL之间的通信不是UTF-8,这意味着特殊字符(如ñ)会混乱。所以setting the connection到UTF-8是一个好的开始。此外,可能是PHP不以符合UTF-8的方式运行,可以使用描述here的函数检查(和设置)。

如果已正确设置此设置,您应该能够使用html_entities函数将字符正确替换为HTML字符编码(ñ)。

不同服务(如PHP和MySQL)之间通信的主要问题是,当它们不使用相同的字符编码时,字符(基本上是数字)将是混乱的。因为MySQL和PHP都会为某个字符使用不同的数字。对于非特殊字符(如非重​​音字母),这可以解决,因为它们非常标准化,但对于更奇怪的字符,仍然会遇到一些经验。

请注意,这个答案假设一个基本的设置,如果我做了一个不合理的假设,请提供反馈,然后我可以帮助你。