4

我在这里众所周知但很难解决问题。是的,我在论坛上搜索,但这些线程已经够老了,所以我决定创建新帖子。所以我使用 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

但是……问题仍然存在。我不能正确地看到那些特定的字符——只有奇怪的象形文字。

4

2 回答 2

1

冬青!最后!:)))))))))

问题是我正在使用 mysqli_ 查询。现在我尝试更改为 mysql_ (注意更改!)查询并且它有效!两周的 haaaaard 工作和研究……唷!

现在谁能给我解释一下这种现象的原因?:))

于 2013-04-11T21:21:22.683 回答
1

您面临的问题与数据库字符编码设置和 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;

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

于 2013-04-10T12:56:43.600 回答