下午好,所有人,
我最近在远程服务器上部署了一个网站,并使用相同的mySQL创建脚本创建了一个数据库。其中两个字段需要显示希腊字符,因此它们的排序规则设置为greek_general_ci。这在我的本地开发机器上工作正常(这与服务器上的设置相同,可能有一些安全设置不同。)但是......
我已经在数据库中添加了一些内容,而我在数据库中的所有内容都是?????而不是我在本地机器上获得的希腊字符Unicode代码。
我已检查过服务器是否已打开校对,以及正确的字符集。我用谷歌搜索了答案,但唉,我没有成功。我想知道这是否是我可以解决的问题,或者我应该联系服务器管理员让他们看看它?因为我不想搞乱服务器设置,因为有一个实时网站运行相同的数据库引擎。
非常感谢提前。
我被要求在这里发布代码,所以这是代码。
AddWord.html我只添加了表单,因为这是所有需要看到的。
<form name="addwrd" action="addWord.php" method="post">
<label for="greek_word">Greek Word</label>
<input type="text" onkeyup="trans(this.id)" id="greek_word" name="GreekWord" size=30><br><br>
<label for="greek_definition">Greek Definition</label>
<input type="text" onkeyup="trans(this.id)" id="greek_definition" name="GreekDefinition" size=30><br><br>
<label for="EnglishWord">English Word</label>
<input type="text" name="EnglishWord" size=30><br><br>
<label for="EnglishDefinition">English Word</label>
<input type="text" name="EnglishDefinition" size=30><br><br>
<label for="chapter">Chapter</label>
<input type="text" name="chapter" size=20><br><br>
<label for="section">Section</label>
<input type="text" name="section" size=20><br><br>
<label for="hint">Hint</label>
<input type="text" name="hint" size=50><br><br>
<input type="submit" name="addword" value="Submit">
</form>
AddWord.php
include_once( 'admin_dataHandler.php' );
$dataHandler = new DataConnection();
/**
* The variables we're getting back from the HTML form we've just filled
* in.
*/
$greekWord = $_POST['GreekWord'];
$greekDef = $_POST['GreekDefinition'];
$englishWord = $_POST['EnglishWord'];
$englishDef = $_POST['EnglishDefinition'];
$chapter = $_POST['chapter'];
$section = $_POST['section'];
$hint = $_POST['hint'];
$dataHandler->addWord($greekWord, $greekDef, $englishWord, $englishDef, $chapter, $section, $hint);
// The header should redirect to the admin index.html page.
这是数据处理程序中的代码,用于将单词添加到数据库中。
function addWord($grkWrd, $grkDef, $engWord, $engDef, $chptr, $sects, $hint){
$sql = "INSERT INTO word (GreekWord, GreekDefinition, EnglishWord, EnglishDefinition, Chapter, Sections,Hint) values (:grkWrd,:grkDef,:engWrd,:engDef,:chptr,:sctn,:hnt)";
$stmt = $this->dataHandler->prepare( $sql );
$stmt->bindParam(':grkWrd', $grkWrd , PDO::PARAM_STR, 45);
$stmt->bindParam(':grkDef', $grkDef , PDO::PARAM_STR, 45);
$stmt->bindParam(':engWrd', $engWord , PDO::PARAM_STR, 45);
$stmt->bindParam(':engDef', $engDef , PDO::PARAM_STR, 45);
$stmt->bindParam(':chptr', $chptr , PDO::PARAM_STR, 45);
$stmt->bindParam(':sctn', $sects , PDO::PARAM_STR, 45);
$stmt->bindParam(':hnt', $hint , PDO::PARAM_STR, 45);
$stmt->execute();
}
我希望这会提供更多信息,对于第一次不发布代码表示歉意。
感谢您抽出时间来研究这个问题。
Welshboy
答案 0 :(得分:4)
我认为所有这些希腊字符都应该包含在UTF8中,并且你可以通过设置一切来使用UTF8来节省一些悲伤。
您谈到了希腊字符unicode代码,但greek
整理不是unicode,而是ISO 8859-7
(请参阅Character Sets and Collations That MySQL Supports)
我几天前写了一篇关于PHP / MySQL字符集问题的文章,我认为可能有一些相关的信息。 How to Avoid Character Encoding Problems in PHP
答案 1 :(得分:0)
我真的怀疑这是数据库的问题。您应该仔细检查您的代码,或在此处发布,因为这是迄今为止最可能的罪魁祸首。