3

我需要在我的数据库中存储一个带有西班牙语问题和答案的表格,但我遇到的问题是我尝试的任何方式都无法使用西班牙语字母表中的特殊字符(¿,ñ, á、é 等)显示在我的字符串输出中。我看到一些字符在我的数据库中(á、é、í、ó、ú),但没有显示在我的字符串中。¿ 甚至无法进入我的数据库。然后 ñ 不在我的数据库中,而是我看到了 ? 象征。在所有情况下,我在 php 文件输出中的字符串都为空。我应该怎么做才能解决这个问题并获得正确的输出?谢谢。

这是我的数据库的样子:

在此处输入图像描述

这是我在我的 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);
}

?>  

这是我得到的结果:

在此处输入图像描述

4

1 回答 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);
}

?>  

享受!:)

于 2012-09-03T19:29:33.933 回答