UTF8立体派字符在MySQL数据库中无法识别

时间:2013-04-10 12:49:09

标签: php mysql wordpress utf-8 character-encoding

我很熟悉但很难在这里解决问题。是的,我在论坛上搜索,但这些线程已经足够老,所以我决定创建新的帖子。 所以我使用WP构建了一个网站,并在一个页面中包含了html FORM。当用户填写表单(用他/她的语言)时,字段的值将进入MySQL数据库表reg_form。

一切正常,值保存,但某些字符(特定于该语言)无法识别。我尝试了很多不同的方法来解决这个问题,但没有什么可以帮助。

最奇怪的是,如果你看一下WordPress表,你会发现那些特定的字符是可识别的,但不是我创建的reg_form表中的。

我试图解决这个问题,最后我决定采取某种荒谬的方式。我创建了新数据库,新表,安装了新wordpress,创建了新表单等。

这就是我在做的事情:

我首先使用了这个建议: http://tympanus.net/codrops/2009/08/31/solving-php-mysql-utf-8-issues/

是的,我的文件是使用UTF8编码保存的(没有BOM)。是的,元标记没问题。是的,FORM使用accept-charset ='UTF-8'。是的,数据库中的所有表都使用UTF8。是的,服务器,数据库和表格排序是相同的“utf8_general_ci”。

然后我尝试在我的代码中插入:

$conn = mysql_connect($server, $username, $password);

mysql_set_charset("UTF8", $conn);

然后我尝试了这个建议 链接到这里: akrabat.com/php/utf8-php-and-mysql /

然后我尝试使用以下链接在.htaccess文件中设置Apache的AddDefaultCharset: httpd.apache.org/docs/2.0/mod/core.html#AddDefaultCharset

但......问题仍然存在。我无法正确看到那些特定的角色 - 只有奇怪的象形文字。

2 个答案:

答案 0 :(得分:0)

您遇到的问题与数据库字符编码设置和Wordpress中的一些具体细节有关。

虽然Wordpress有一般字符编码设置,通常也会关注数据库表,但它并不关心这些表所在的数据库的默认字符编码设置。

因此,当您的插件/代码添加自己的数据库表时,您还需要注意编码设置 - 因为默认情况下它们将是您创建表的数据库默认值,这很可能是latin-1这对你的语言效果不佳。

设置数据库的默认字符集(如果数据库名称不同,请将“wpdb”替换为

):

ALTER DATABASE wpdb CHARACTER SET utf8 COLLATE utf8_general_ci;

更改现有表格的字符集*“reg_form”*:

ALTER TABLE reg_form CONVERT TO CHARACTER SET charset_name;

注意:首先备份您的数据库。

答案 1 :(得分:0)

HOLLY SHIT !!最后! :)))))))))

问题在于我使用的是mysqli_查询。现在我尝试更改为mysql_(注意更改!)查询,它工作了!!两个星期的haaaaard工作和研究...... P !,

现在谁能正确解释这个现象的原因? :))