Php MySQL数据库中无法识别UTF8立陶宛字符

Php MySQL数据库中无法识别UTF8立陶宛字符,php,mysql,wordpress,utf-8,character-encoding,Php,Mysql,Wordpress,Utf 8,Character Encoding,我知道这里的问题,但很难解决。是的,我在论坛上搜索过,但那个些帖子已经足够老了,所以我决定创建一个新帖子。 所以我用WP建立了一个网站,在一个页面中包含了html表单。当用户填写表单(用他/她的语言)时,字段的值将进入MySQL数据库表reg_表单 一切正常,值已保存,但某些字符(该语言中的特定字符)无法识别。我尝试了很多不同的方法来解决这个问题,但没有什么能帮上忙 最奇怪的是,如果你看WordPress表格,你会发现那些特定的字符是可识别的,但在我创建的注册表中却没有 我试图解决这个问题,最后

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

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

最奇怪的是,如果你看WordPress表格,你会发现那些特定的字符是可识别的,但在我创建的注册表中却没有

我试图解决这个问题,最后我决定以某种可笑的方式来解决。我创建了新数据库、新表、安装了新wordpress、创建了新表单等

我就是这么做的:

我首先使用了这个建议:

是的,我的文件是使用UTF8编码保存的(没有BOM表)。是的,元标记是可以的。是的,表单使用accept charset='UTF-8'。是的,数据库中的所有表都使用UTF8。是的,服务器、数据库和表的排序规则是相同的“utf8\U常规\U 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


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

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

虽然Wordpress有一个常规字符编码设置,通常也会考虑数据库表,但它不考虑这些表所在的数据库的默认字符编码设置

因此,当您的插件/代码添加您自己的数据库表时,您还需要注意编码设置,因为默认情况下,它们将是您创建表时使用的数据库默认设置,很可能是拉丁语-1,它不适合您的语言

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

要更改现有表格*的字符集*“注册表表格”*:

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

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

问题是我使用的是mysqli_uu查询。现在我尝试更改为mysql(注意更改!)查询,结果成功了!!两周的Haaaard工作和研究。。。呸


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

那么mysql_查询(“SET NAMES UTF8”)呢?(顺便说一句,不要使用
mysql.*
函数,因为它们已被弃用)$dbc=mysqli_connect('localhost','username','pass','database')或die('Error connecting to mysql server')//mysqli_set_字符集(“UTF8”,$dbc);mysqli_查询(“设置名称‘utf8’”)$query=“INSERT INTO reg_form(a、b、c等);我没有注意到您使用Wordpress。是的,这是我已经理解的。无论如何,谢谢您。但问题仍然是一样的-为什么这些设置不能正确地用于我自己的表(-s)?@BaltasVilkas:因为当您创建自己的表时,除非您指定编码,否则它们将从数据库中继承字符集。您的注册表表和其中的所有文本列是否都具有UTF-8字符集?谢谢您M8R-1jmw5r。我将在数小时后尝试此操作。出于一般理解,我可以推荐以下帖子:。它也与此链接。现在我尝试了第一个和第二个设置。没有任何更改。实际上,这是我在数据库中查询时(使用命令SHOW CREATE TABLE reg_form;)输出的结果:CREATE TABLE
reg_form
id
int(11)非空自动增量,
first_name
char(50)不为NULL等,主键(
id
)ENGINE=InnoDB AUTO_INCREMENT=25 DEFAULT CHARSET=utf8不能作为原因。但无论如何,要处理UTF-8,基本上您必须从一开始就做好准备。我唯一能让它可靠工作并以可复制的方式工作的方法是将MySQL与UTF-8相关的所有内容设置为utf8:数据库、表和列排序规则-和-字符集另外,连接时
设置名称utf8
。MySQL很糟糕。
ALTER DATABASE wpdb CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE reg_form CONVERT TO CHARACTER SET charset_name;