将德语单词存储到MySql DB中的问题....

时间:2011-05-17 08:30:49

标签: php mysql zend-framework

我在项目中面临一个小问题当我尝试 将一些德语单词 存储到 MYSQL数据库中时。如果 德语单词包含变音符号 ,即字符ä,ö,ß,ü等,它们不会存储,因为它们 .... ?

我想 将它们 存储到数据库中。为此,我尝试更改COLLATION to UTF8-general-ci, and others in the list using PHP myAdmin。但是他们都没有为我工作。

我是以正确的方式还是我必须做其他事情。

请提供一些帮助。

先谢谢......

4 个答案:

答案 0 :(得分:3)

您必须选择正确的传输编码。致电

SET NAMES utf8

在插入数据之前,确保在插入之前德语单词是utf8编码的。

答案 1 :(得分:1)

几年前我遇到了同样的问题。我通过隐式设置mysql的NAMES选项解决了这个问题。在我的代码中,它看起来像这样:

//在AbstractMapper类

public function __construct($modelClass, $dbTable) {
$this->setDbTable($dbTable);
$stmt = new Zend_Db_Statement_Pdo($this->getDbTable()->getAdapter(), 'set names utf8');
$stmt->execute();
$this->_model_class = $modelClass;
}

答案 2 :(得分:1)

在将文本保存到数据库之前,请先尝试使用utf8_encode($string)将文本编码为UTF8。为了使字符能够以某种语言正确显示,您必须(1)将文本设置为正确的字符集,然后(2)将数据库设置为正确的字符集(就像您所做的那样)。

另外,例如,文件display.php将输出德语文本,您可以在任何编辑器(EmEditor?)中打开文件,然后“另存为”,选择正确的编码方案。之后,显示文件在输出文本时将处理字符集。

答案 3 :(得分:0)

连接到数据库后,请使用以下代码:

SET NAMES XXX

将XXX替换为您的工作字符集。