【问题标题】:How to display database value with ñ [duplicate]如何用ñ显示数据库值[重复]
【发布时间】:2015-11-03 02:26:33
【问题描述】:

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

-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";
}

【问题讨论】:

  • 清理通常用于插入数据,而不是选择和呈现数据 - 只需使用 $provincerow['cityname']
  • 先生,我尝试 echo $provincerow['cityname'],但结果是“Las pi?as”... ñ 只是转换为黑色背景的?(问号)
  • 您可能需要更改数据库的编码
  • 在该代码中,所有带有ñ的单词都不会显示,只是简单的选择?.....只是在下拉框中显示输出.. :(
  • 确保所有地方(浏览器、html、数据库、连接等)的字符集都相同。

标签: php mysql encoding


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 先生,谢谢您的关心。 :) 我刚刚解决了我的问题 :) 只需添加 mysql_query("SET NAMES 'utf8'", $db); mysql_query("SET CHARACTER_SET 'utf8'", $db in my mysql connection :) community.sitepoint.com/t/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-01
  • 1970-01-01
  • 2019-01-19
  • 1970-01-01
  • 2021-10-02
相关资源
最近更新 更多