我尝试了很多类型的解决方案,如:
- 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";
}
答案 0 :(得分:1)
啊,你在浏览器,PHP和MySQL中偶然发现了奇妙的字符编码世界。
处理这些字符并非易事,因为它取决于许多因素。通常情况下,PHP和MySQL之间的通信不是UTF-8,这意味着特殊字符(如ñ)会混乱。所以setting the connection到UTF-8是一个好的开始。此外,可能是PHP不以符合UTF-8的方式运行,可以使用描述here的函数检查(和设置)。
如果已正确设置此设置,您应该能够使用html_entities函数将字符正确替换为HTML字符编码(ñ)。
不同服务(如PHP和MySQL)之间通信的主要问题是,当它们不使用相同的字符编码时,字符(基本上是数字)将是混乱的。因为MySQL和PHP都会为某个字符使用不同的数字。对于非特殊字符(如非重音字母),这可以解决,因为它们非常标准化,但对于更奇怪的字符,仍然会遇到一些经验。
请注意,这个答案假设一个基本的设置,如果我做了一个不合理的假设,请提供反馈,然后我可以帮助你。