我必须在我的数据库中使用哪种类型的排序规则才能使用西班牙语字符?

时间:2012-09-03 19:23:03

标签: php html database

我需要在我的数据库中存储一个带有问题和答案的西班牙语表格,但我遇到的问题是我尝试的任何方式我都无法使用西班牙语字母中的特殊字符(¿ ,ñ,á,é等)显示在我的字符串输出中。 有一些字符,我看到我的数据库中有(á,é,í,ó,ú),但不会显示在我的字符串中。 ¿甚至无法进入我的数据库。 然后ñ不在我的数据库中,而是我看到了?符号。 在所有情况下,我在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);
}

?>  

这是我得到的结果:

enter image description here

1 个答案:

答案 0 :(得分:1)

您只需要定义字符集。

<?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);
}

?>  

享受! :)