2013-04-10 105 views
3

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

一切正常,该值被保存,而是一些字符(具体以该语言)无法识别。我尝试了很多不同的方法来解决这个问题,但没有任何帮助。

最奇怪的是,如果你看的WordPress表,你可以找到那些特定的字符识别,但不是在我创建reg_form表。

我试图解决这个问题,最后我决定以某种荒谬的方式接近。我创建新的数据库,新表,安装了新的WordPress,创造了新的形式等

这是我在做什么:

我用这个建议,第一: http://tympanus.net/codrops/2009/08/31/solving-php-mysql-utf-8-issues/

是的,我文件使用UTF8编码保存(不含BOM)。是的,meta标签是可以的。是的,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/

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

但是... ST这个问题依然存在。我无法正确看到这些特定人物 - 只有怪异的象形文字。

+1

'mysql_query(“SET NAMES UTF8”);'? (BTW不使用'mysql_ *'函数,因为它们已被弃用) – Voitcus 2013-04-10 12:55:21

+0

$ dbc = mysqli_connect('localhost','username','pass','database') 或die('连接到MySQL服务器的错误'。) ; // mysqli_set_charset(“UTF8”,$ dbc); mysqli_query(“SET NAMES'utf8'”); $查询=“INSERT INTO reg_form(A,B,C等); – 2013-04-10 12:58:13

+0

我没有注意到你使用WordPress – Voitcus 2013-04-10 13:01:26

回答

0

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

虽然WordPress的具有共性的编码设置,一般需要关心数据库表中,也并不关心数据库的表是在默认的字符编码设置。

所以,当你的插件/代码你自己添加一个数据库表,你还需要注意编码设置 - 因为默认情况下,它们将是你创建表的数据库默认值,最有可能是拉丁语-1,这对你的语言来说效果不好。

要设置的默认字符数据库中设置(与你的数据库名称替换“WPDB”如果不同):

ALTER DATABASE wpdb CHARACTER SET utf8 COLLATE utf8_general_ci; 

要更改字符集为您现有的表*“reg_form” * :

ALTER TABLE reg_form CONVERT TO CHARACTER SET charset_name; 

注:备份数据库第一。

+0

是的,这就是我理解已经谢谢你的好意,但问题仍然是相同的 - 。为什么这些设置对于我自己的表(-s)不能正常工作? – 2013-04-10 13:03:51

+0

@BaltasVilkas:因为当你创建自己的表时,除非指定了编码,否则它们将继承数据库中的字符集。*你的* reg_form *表和所有其中的文本列有UTF-8字符集? – 2013-04-10 13:08:28

+0

谢谢M8R-1jmw5r。我会在几个小时后尝试。 – 2013-04-10 13:09:17

0

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

问题是我正在使用mysqli_查询。现在我试图改变为mysql_(注意改变!)查询并且它工作了!两个星期的haaaaard工作和研究...唷!

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

+0

不能是原因。但无论如何,为了处理UTF-8,基本上你必须从一开始就做好准备。只有这样我才能使这个工作可靠并且可重复地工作,就是设置*所有*与MySQL相关的UTF-8:数据库,表**和**列归类 - 和 - 设置为utf8的字符集和另外的SET在连接时命名utf8'。 MySQL非常糟糕。 – raveren 2013-09-18 14:03:08