当我尝试将一些德语单词存储到 MYSQL 数据库中时,我的项目中遇到了一个小问题。当这个德语单词包含变音符号时,即字符 ä、ö、ß、ü 等,它们不会按原样存储.....?
我想将它们按原样存储到 Database.To 中,所以我试图更改COLLATION to UTF8-general-ci, and others in the list using PHP myAdmin
.但他们都不适合我。
的方式是否正确,或者我必须做其他事情。
请提供一些帮助。
提前致谢...
您还必须选择正确的传输编码。叫
SET NAMES utf8
在插入数据之前,请确保德语单词在插入之前采用 UTF8 编码。
尝试先使用 utf8_encode($string) 将文本编码为 UTF8,然后再将其保存到数据库中。为了使字符以某种语言正确显示,您必须 (1) 将文本设置为正确的字符集,然后 (2) 将数据库设置为正确的字符集(就像您所做的那样)。
此外,例如,文件display.php
将输出德语文本,您可以在任何编辑器(EmEditor?)中打开文件,然后"另存为",选择正确的编码方案。之后,显示文件在输出文本时将处理字符集。
年前,
我遇到了同样的问题。我已经通过为 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;
}
连接到数据库后,使用以下代码:
SET NAMES XXX
将 XXX 替换为您的工作字符集。