我需要使用哪种排序规则来处理数据库中的西班牙语字符?

3
我需要在我的数据库中存储一个包含西班牙语问题和答案的表格,但我遇到的问题是,无论我尝试哪种方式,都无法使西班牙字母表中的特殊字符(¿、ñ、á、é等)在我的字符串输出中显示出来。 对于某些字符,我在我的数据库中看到了它们(á、é、í、ó、ú),但它们没有在我的字符串中显示出来。 ¿甚至无法输入到我的数据库中。 然后,ñ不在我的数据库中,而是看到一个?符号。 在所有情况下,我的php文件输出的字符串都为null。 我该怎么做才能修复这个问题并获得正确的输出? 谢谢。
以下是我的数据库外观: enter image description here 以下是我在php文件中使用的代码:
<?php

$databasehost = "localhost";
$databasename = "Cuestionario";
$databaseusername ="user";
$databasepassword = "password";

$con = mysql_connect($databasehost,$databaseusername,$databasepassword) or  die(mysql_error());
mysql_select_db($databasename) or die(mysql_error());

$query = "SELECT * FROM Cuestionario_Spanish";
$sth = mysql_query($query);

if (mysql_errno()) { 
header("HTTP/1.1 500 Internal Server Error");
echo $query.'\n';
echo mysql_error(); 
}
else
{
$rows = array();
while($r = mysql_fetch_assoc($sth)) {
    $rows[] = $r;
}
print json_encode($rows);
}

?>  

这是我的结果:

这是我得到的结果:

在此输入图片描述

1个回答

2

您只需要定义字符集。

<?php

$databasehost = "localhost";
$databasename = "Cuestionario";
$databaseusername ="user";
$databasepassword = "password";

$con = mysql_connect($databasehost,$databaseusername,$databasepassword) or  die(mysql_error());
mysql_select_db($databasename) or die(mysql_error());
mysql_query("SET NAMES 'utf8'"); //This will FORCE SET CHARSET to utf-8

$query = "SELECT * FROM Cuestionario_Spanish";
$sth = mysql_query($query);

if (mysql_errno()) { 
header("HTTP/1.1 500 Internal Server Error");
echo $query.'\n';
echo mysql_error(); 
}
else
{
$rows = array();
while($r = mysql_fetch_assoc($sth)) {
    $rows[] = $r;
}
print json_encode($rows);
}

?>  

祝您愉快!:)


谢谢,现在我看到了我的字符串信息,但这并没有回答我需要在我的数据库中在问题开头添加¿的部分,你知道如何解决吗? - zvzej
不用管它了,它已经可以正常运行了,我只是需要在数据库中进行修复。再次感谢。 - zvzej
抱歉那时我的网络断开了。很高兴它对你有用 :) - Keval Domadia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接