簡體   English   中英

數據庫未正確存儲希臘字符

[英]Database not storing the Greek Characters correctly

大家下午好,

我最近在遠程服務器上部署了一個網站,並使用相同的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

我認為所有這些希臘字符都應包含在UTF8中,並且通過將所有內容都設置為使用UTF8,您可以避免一些麻煩。

您討論了希臘字符unicode代碼,但greek歸類不是unicode,它是ISO 8859-7 (請參閱MySQL支持的字符集和歸類

幾天前,我寫了一篇有關PHP / MySQL的字符集問題的文章,我認為其中可能包含一些相關信息。 如何避免PHP中的字符編碼問題

我真的懷疑這是數據庫的問題。 您應該仔細檢查您的代碼,或將其發布在這里,因為到目前為止,這是最有可能的罪魁禍首。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM